~ / endpoints / Email & Lead API

Instagram Email & Lead Scraper API

Our Instagram email and lead scraper reads a public business profile and returns its published contact block as JSON: business email, phone, category, external link, and address when the account exposes them, alongside the handle, name, and bio for lead enrichment.

Get a free API keyBrowse the endpoints
1,000
free requests / mo
2.6s
median response
JSON
structured output
1
call per profile
the login wall

Why Instagram Email & Lead data hides behind a login

Instagram does not publish account emails through any public API, and only some business profiles expose a contact button that a logged-out visitor can see. Even then the contact block is often stripped for large accounts, so honest coverage means returning the fields when they are present and a clear null when Instagram withholds them.

call it once

Your first Instagram Email & Lead Scraper API call

cURL
curl "https://api.instagramscraperapi.com/api/v1/instagram/email?username=natgeo&api_key=$API_KEY"
Python
import requests, os

BASE = "https://api.instagramscraperapi.com"
API_KEY = os.environ["API_KEY"]

# Pass a username (no leading @) or a full profile URL.
data = requests.get(
    f"{BASE}/api/v1/instagram/email",
    params={"username": "natgeo", "api_key": API_KEY},
    timeout=30,
).json()

# email / phone populate only when the profile exposes a public contact block.
if data["email"]:
    print(data["username"], "->", data["email"], data.get("phone"))
else:
    print(data["username"], "has no public contact block exposed")
print(data["full_name"], "|", data["biography"])
inputs

Parameters

ParameterRequiredDefaultNotes
usernamerequired-The Instagram username without the leading @, e.g. natgeo. Required unless you pass url.
urloptional-A full profile URL such as https://www.instagram.com/natgeo/. The handle is parsed out of the path. One of username or url is required.
countryoptionalUSTwo-letter country code for the egress region. Instagram serves the contact block only to residential US IPs logged-out, so US is the default.
api_keyrequired-Your API key, passed as a query parameter. Get one free at signup.
what returns

What the Instagram Email & Lead Scraper API hands back

200 OK
{
  "username": "natgeo",
  "url": "https://www.instagram.com/natgeo/",
  "email": null,
  "phone": null,
  "category": null,
  "external_url": null,
  "address": null,
  "is_business": null,
  "full_name": "National Geographic",
  "biography": "Step into wonder and find your inner explorer with National Geographic",
  "is_verified": true,
  "source": "instagram",
  "data_source": "embedded"
}
FieldTypeDescription
usernamestringThe profile handle the contact data belongs to.
urlstringThe canonical profile URL.
emailstringThe business or public email when the profile exposes one, or an address found in the bio text. Null when no public email is available.
phonestringThe business or public phone number when exposed, otherwise null.
categorystringThe business or creator category label when present, otherwise null.
external_urlstringThe website link in the bio when present, otherwise null.
addressobjectA parsed address (street_address, city_name, zip_code, region_name, country_code) when the profile publishes one, otherwise null.
is_businessbooleanTrue for a business or professional account, false otherwise, or null when Instagram does not ship the flag logged-out.
full_namestringThe account display name, useful for lead enrichment.
biographystringThe bio text, which sometimes carries a plaintext email we surface in the email field.
is_verifiedbooleanTrue when the account carries the blue verified badge.
data_sourcestringembedded when the fields came from the profile page, web_profile_info when enriched from the authorized profile API hop.
put it to work

Where teams point Instagram data

>

B2B lead enrichment

Turn a list of business handles into contact rows: email, phone, category, and website when the account publishes them, plus name and bio for context.
>

Local business outreach

Read address, category, and external_url from local business profiles that still expose a contact block to build a regional prospect list.
>

Creator partnership sourcing

Pull the business email and website of creators who list contact details so partnerships can reach the right inbox instead of a DM.
>

CRM hygiene

Attach the published website and category to existing Instagram leads so records stay complete and searchable by niche.
>

Coverage screening

Check whether an account exposes a public contact block before you invest outreach effort, using the honest null when it does not.
>

Directory building

Assemble a niche directory of businesses on Instagram with the contact fields each one chooses to make public.
why it holds

How our Instagram Email & Lead Scraper API stays reliable

We read the same public profile a logged-out visitor sees and pull the structured contact fields a business account chooses to expose, with an optional authorized hop for accounts that serve their contact block only through the profile API. There is no Facebook app and no scraping of private data: fields that Instagram gates come back as an honest null.

*

Structured contact fields

email, phone, category, external_url, and a parsed address object, harvested from the profile's contact block rather than guessed from prose.
*

Bio email fallback

When a profile drops a plaintext address into its bio, we surface it in the email field, and we never mint an address that is not actually there.
*

Authorized enrichment hop

For accounts whose contact block is served only through the profile API, an optional second hop reads it with the required header and reports honestly when a session is needed.
*

Residential proxies and anti-bot

Requests route through residential US IPs with anti-bot handling, matching where Instagram serves the contact fields logged-out.
*

Honest nulls

When Instagram withholds a contact field, the response returns null for it rather than a fabricated value, so your list stays trustworthy.
*

Lead context included

Every response also carries full_name, biography, and is_verified, so a contact row doubles as a lead record.
weigh the options

Instagram Email & Lead Scraper API weighed against the Instagram API and DIY

Our APIDIY (requests / headless)Instagram Graph API
Public contact fieldsemail, phone, category, url, address when exposedYou locate them in a hydrated blobNo public email endpoint
InputUsername or profile URLManual page fetch and parseOwned account id only
SetupAPI key onlyResidential proxies, headless browser, parsersFacebook app, linked Business account, app review
Honest gapsNull when Instagram withholds a fieldSilent gaps or wrong guessesNot applicable for third parties
Anti-bot and proxiesBuilt in, residential USYou build and maintain itNot applicable
OutputValidated JSON contact recordRaw HTML you parse yourselfJSON, scoped to your assets
plans & pricing

Pay only for what you pull

PlanPriceBest for
Free1,000 requestsTesting and small jobs
Pro$0.60 / 1kProduction workloads
Pay-as-you-go$0.90 / 1kSpiky or one-off volume

Median response 2.6s. You only pay for successful requests.

FAQ

What is an Instagram email scraper?

An Instagram email and lead scraper is a tool that reads a public business profile and returns the contact details the account chooses to publish. Our endpoint takes a username or profile URL and returns the business email, phone, category, external link, and address when they are exposed, plus the name, bio, and verified flag for lead context, all as JSON from one request.

Can you get an email for any Instagram account?

No, and any tool that claims to is overstating it. Instagram has no public email endpoint. Emails come from the contact block a business or professional account opts to expose, and Instagram strips that block for many large accounts to logged-out visitors. The sample on this page shows natgeo returning identity fields with email as null for exactly that reason. When a profile does publish a public email, we return it; when it does not, we return null.

Which accounts actually return an email?

Business and professional accounts that keep a public contact button, most often smaller and regional businesses and creators, are the ones that expose an email, phone, category, or address logged-out. Large brand accounts frequently have those fields withheld. If a profile also drops a plaintext email into its bio, we surface that in the email field as a fallback.

How do I scrape Instagram leads at scale?

Send a request per handle to the instagram/email endpoint with your API key. We route through residential IPs, handle anti-bot checks, retry on failure, and parse the contact block, returning a clean JSON record per profile. Run your list of handles through it and keep the rows where email, phone, or external_url came back populated. Failed requests are not billed.

Do I need a Facebook app or the Graph API?

No. You only need an instagramscraperapi key passed as api_key. The official Instagram Graph API has no endpoint for arbitrary public account emails at all, and it requires a Facebook app, a linked Business account, and app review even for the data it does return, which is limited to accounts you own or manage.

Is scraping Instagram emails legal and GDPR-compliant?

Scraping publicly available business contact details is broadly permitted in many jurisdictions, and US courts have declined to treat collecting public profile data as unauthorized access. That said, a business email is often personal data, so laws such as GDPR and CCPA still apply to how you store and use it: you need a lawful basis, must honor deletion and opt-out requests, and must follow anti-spam rules like CAN-SPAM when you send outreach. Instagram's terms also restrict automated collection. Use the endpoint for lawful, consented outreach and take your own legal advice.

Pull email & lead api as clean JSON
Start on 1,000 free requests. No card needed.
Get a free API key Browse the endpoints