Instagram Profile Scraper API
Authorizations
X-API-Key or AuthorizationstringheaderrequiredWe recommend sending your Personal API Key in x-api-key. Datablist handles token renewal for you. Optionally, use an access token as Authorization: Bearer <token> if your application manages tokens itself. Send only one credential header.
Extract names, bios, follower counts, websites, and other profile details from Instagram. Choose a scraping mode to include available public contact details or "About this account" data.
Public ID: instagram-profile-scraper. Get the current definition. You can read it without authentication.
Settings
Use scrapeType to choose what to retrieve:
profile(default): profile details, including public email and phone numbers when available.profile_about: profile details plus "About this account" data.about: only "About this account" data, such as home country and date joined.public: a cheaper profile lookup without email or phone details. It can also return the most recent location when available.
scrapeTypestring- The private profile includes the public phone_number and public email address if provided by the user. It costs 2 credits if the input is an Instagram Id. 2+1 credits if the input is an URL or an username.
- The "About this account" data have two outputs: "Home Country" and "Date Joined". "About" data scraping costs 2 credits. 2+1 credits if the input is an URL or an username.
- The public profile doesn't include phone or email but is cheaper. It costs 1 credit if the input is an username or an URL. 1+1 credits if the input is the Instagram Id.
"profile", "profile_about", "about", "public"Additional properties are supported.
Inputs
Give each input an inputId you can use to match its result to your record. Put the Instagram identifier in data.instagramIdentifier.
instagramIdentifier accepts a full URL such as https://www.instagram.com/example.studio/, a username such as example.studio, or a numeric user ID as a string, such as "1234567890". Send IDs as strings.
For follower or following lists, use Instagram Followers/Following.
instagramIdentifierstringrequiredInstagram user URL (https://www.instagram.com/tomhanks/), or username (tomhanks), or Instagram id (1758466516).
Additional properties are supported.
Outputs
Each result contains your inputId, a status, the data in outputs, and creditsUsed. If the input failed or no profile was found, error explains why; otherwise it is null.
profileUrl contains the resolved Instagram profile URL. Other fields keep their Instagram names, such as instagramUsername, instagramBio, and instagramFollowerCount. Contact details and other optional values depend on the selected mode and the information available for that account.
The schema lists known profile fields. Results can include additional fields, including instagramHomeCountry and instagramDateJoined when requesting "About this account" data. Missing information may be null. Use the result's status and error to interpret the outcome; the legacy instaEnrichmentStatus field is omitted.
instagramFullNamestringThe full name of the user
Enabled when: scrapeType!=about.
instagramBiostringInstagram user bio.
Enabled when: scrapeType!=about.
instagramFollowerCountnumberInstagram user follower count.
Enabled when: scrapeType!=about.
instagramFollowingCountnumberInstagram user following count.
Enabled when: scrapeType!=about.
instagramCategorystringInstagram user category name.
Enabled when: scrapeType!=about.
instagramWebsitestringInstagram user external url.
Enabled when: scrapeType!=about.
"uri"instagramEmailstringInstagram user public email address.
Enabled when: scrapeType!=about,public.
"email"instagramPhonestringInstagram user phone number, when available.
Enabled when: scrapeType!=about,public.
instagramWhatsAppPhonestringInstagram WhatsApp phone number, when available.
Enabled when: scrapeType!=about,public.
instagramAccountTypestringInstagram Account Type. One of: PERSONAL, BUSINESS, CREATOR
Enabled when: scrapeType!=about,public.
instagramPicturestringInstagram user profile picture.
Enabled when: scrapeType!=about.
"uri"instagramPrivatebooleanIs the Instagram profile private.
Enabled when: scrapeType!=about.
instagramVerifiedbooleanIs the Instagram profile verified.
Enabled when: scrapeType!=about.
instagramIsBusinessbooleanIs the Instagram profile a business profile.
Enabled when: scrapeType!=about.
instagramMediaCountnumberNumber of posts posted
Enabled when: scrapeType!=about.
instagramZipCodestringEnabled when: scrapeType!=about.
instagramCitystringEnabled when: scrapeType!=about.
instagramStreetAddressstringEnabled when: scrapeType!=about.
instagramLastLocationstringIf the user has posts with location information, retrieve the most recent location.
Enabled when: scrapeType==public.
instagramUserIdstringInstagram internal id
instagramUsernamestringInstagram username
profileUrlstringInstagram profile URL
"uri"Additional properties are supported.
Credits and limits
Cost: Starts at 1 credit per profile
Public profile scraping starts at 1 credit per profile. Standard profile and "About this account" lookups each start at 2 credits; combining both starts at 4 credits. Converting a username or URL to an ID, or resolving an ID for a public lookup, can add a credit. Pricing varies, so creditsPerInput is null. Check each result's creditsUsed and the task's credits.used for actual usage.
Send 1–10,000 inputs per task, within 16 KiB per input and 10 MiB per request. Tasks can run for up to 24 hours; completed, failed, or stopped tasks are kept for 90 days.
You can set maxCredits to stop starting new work after a credit threshold. Work already underway can still exceed it. Enrichment and source tasks share your account balance and task limits. See limits and errors.
Accepted task and results
The API returns 202 Accepted with a task ID. Save it, then check links.self every few seconds. Once status is completed, failed, or stopped, read links.results. Failed and stopped tasks can still have useful results. See the task reference.
Example results (sample data and credit amounts):
{ "taskId": "00000000000040008000000000000001", "results": [ { "inputId": "row-1", "status": "success", "outputs": { "profileUrl": "https://www.instagram.com/example.studio/", "instagramUserId": "1234567890", "instagramUsername": "example.studio", "instagramFullName": "Example Studio", "instagramBio": "Independent design studio.", "instagramFollowerCount": 12500, "instagramFollowingCount": 450, "instagramCategory": "Design", "instagramWebsite": "https://example.com", "instagramEmail": "hello@example.com", "instagramPhone": "+14155550100", "instagramWhatsAppPhone": "+14155550100", "instagramAccountType": "BUSINESS", "instagramPicture": "https://example.com/profile.jpg", "instagramPrivate": false, "instagramVerified": false, "instagramIsBusiness": true, "instagramMediaCount": 320, "instagramZipCode": "94105", "instagramCity": "San Francisco", "instagramStreetAddress": "123 Example Street" }, "creditsUsed": "3", "error": null } ], "nextCursor": null}If nextCursor is not null, pass it unchanged in the next request to get more results. Pages default to 500 results; limit accepts 1–1,000. A page is at most 128 KiB, so it may contain fewer results than requested.