# Instagram Email Finder: 1 Credit, Email When Public (https://www.socialcrawl.dev/blog/instagram-email-finder)
> 9/9 Instagram about lookups returned country (1 credit). Public email on 3/9 — null when unpublished. YouTube about costs 60 credits. Captured 2026-09-05.
An Instagram email finder that ships is a GET, not a username widget. On 2026-09-05, `GET /v1/instagram/profile/about?handle=nasa` cost 1 credit on the SocialCrawl API and returned `author.ext.public_email: "public-inquiries@hq.nasa.gov"`, `country: "United States"`, and `account_created: "August 2013"`. Same call on `natgeo`: country and join month present, `public_email: null`. Still 1 credit. Still `success: true`. Null means unpublished, not a miss.
Nine of nine public Instagram accounts in this harvest returned country and join month. Three of nine returned a public email (`nasa`, `mkbhd`, `sid.and.listen`); phone 1/9 (`garyvee`); category 3/9. Smallest account this run: `veritasium` at 359,086 followers.
YouTube is a different lane. Cheap `/v1/youtube/channel` is 1 credit — ISO-2 country, `public_email` null on both handles in this run. `/v1/youtube/channel/about` is 60 credits and returned `contact@veritasium.com` / United States and `neil@rickastley.co.uk` / United Kingdom.
Auth is `x-api-key`. Contact lives on `author.ext` in [the unified schema](/unified-schema). Captured JSON below, then how to replay it with one API key.
## How do you get an Instagram creator's public email via API?
The 1-credit about call is the Instagram email finder you can actually ship. As an Instagram creator email API, it returns the public Contact-panel address when the account publishes one, plus country and join month on the same payload. Treat it as an Instagram contact info API, not a guessed inbox.
### The NASA about call (email present, 1 credit)
This is the address on the professional Contact panel, visible to anyone who taps Contact — not a derived mailbox.
```bash
curl -s -H "x-api-key: $SOCIALCRAWL_API_KEY" \
"https://www.socialcrawl.dev/v1/instagram/profile/about?handle=nasa"
```
Captured 2026-09-05 (`credits_used: 1`, `request_id: req-rU4h7n0AU5r8eklB`):
```json
{
"success": true,
"platform": "instagram",
"endpoint": "/v1/instagram/profile/about",
"credits_used": 1,
"cached": false,
"request_id": "req-rU4h7n0AU5r8eklB",
"data": {
"author": {
"id": "528817151",
"username": "nasa",
"display_name": "NASA",
"verified": true,
"followers": 104401035,
"url": "https://www.instagram.com/nasa/",
"ext": {
"account_created": "August 2013",
"country": "United States",
"public_email": "public-inquiries@hq.nasa.gov",
"public_phone": null,
"business_category": null
}
}
}
}
```
Read the leaves, not just the inbox. Country and join month came back even though phone and category are unpublished. `public_email` is the only contact field NASA turned on. That is an Instagram email finder via API: published address when it exists, origin data when it does not.
### natgeo: same call, email null, still a hit
National Geographic has 268 million followers and no public email on this surface. The call still billed 1 credit and still succeeded (`request_id: req-rOS6OjktlMI6urlT`):
```json
{
"success": true,
"platform": "instagram",
"endpoint": "/v1/instagram/profile/about",
"credits_used": 1,
"cached": false,
"request_id": "req-rOS6OjktlMI6urlT",
"data": {
"author": {
"id": "787132",
"username": "natgeo",
"display_name": "National Geographic",
"verified": true,
"followers": 268623965,
"url": "https://www.instagram.com/natgeo/",
"ext": {
"account_created": "November 2010",
"country": "United States",
"public_email": null,
"public_phone": null,
"business_category": null
}
}
}
}
```
Contact is a **published field**, not a scrape of the bio. Instagram's [About this account](https://help.instagram.com/697961817256175/) panel is country ("Account based in") plus date joined. Email, phone, and the category label live on the professional [Contact button and category](https://www.facebook.com/business/help/138925576505882) — "anyone who taps Contact" can see them. `/v1/instagram/profile/about` combines those two surfaces. A `null` leaf means the account did not publish that field.
An Instagram email extractor UI that puts a Get Email button over this field is hiding a published absence. Null is the data.
Email-null handles in this run: `natgeo`, `veritasium`, `mrbeast`, `garyvee`, `aliabdaal`, `hubermanlab`. Email present: `nasa`, `mkbhd` (`business@mkbhd.com`), `sid.and.listen` (`TeamSid@gersh.com`). Do not invent others from this harvest.
### Ordinary profile is additive, not a substitute
[Instagram profile endpoints](/platforms/instagram) include ordinary `GET /v1/instagram/profile` at 1 credit. That call is useful. It is not a substitute for the about panel.
| handle | endpoint | public_email | business_category | country | join month |
|---|---|---|---|---|---|
| nasa | about | public-inquiries@hq.nasa.gov | null | United States | August 2013 |
| nasa | profile | absent | null | absent | absent |
| aliabdaal | about | null | Entrepreneur | United Kingdom | April 2012 |
| aliabdaal | profile | absent | Entrepreneur | absent | absent |
| sid.and.listen | about | TeamSid@gersh.com | Digital creator | United States | December 2024 |
| sid.and.listen | profile | TeamSid@gersh.com | Digital creator | absent | absent |
NASA's `public-inquiries@hq.nasa.gov` is **about-only**. Ordinary profile did not carry `public_email` at all. `sid.and.listen` writes `TeamSid@gersh.com` in the bio, so **both** profile and about return it, plus `business_category: "Digital creator"`. `aliabdaal` has category `"Entrepreneur"` on both; email null on both.
If you only call `/v1/instagram/profile`, you miss about-panel emails like NASA's. Use about when you need the Contact-panel address; use profile when you already know the address lives in the bio.
## Can you pull a YouTube channel email the same way?
Same `author.ext` shape. Different price, different surface. A YouTube channel email is not a 1-credit Instagram lookup with a different host. Check the cheap channel call first; spend 60 credits on `/v1/youtube/channel/about` only when you need the authenticated address. [YouTube channel endpoints](/platforms/youtube) and [per-endpoint credit costs](/docs/endpoint-pricing) are the two pages to keep open.
### Check the 1-credit channel call first
Both `veritasium` and `RickAstleyYT` on `GET /v1/youtube/channel` (1 credit) came back with `public_email: null` and country as ISO-2 (`US`, `GB`). Neither channel writes an address into the public description. Subscriber counts are approximate (`ext.followers_approximate: true`): 21,200,000 for `veritasium`, 4,540,000 for `RickAstleyYT`.
```bash
curl -s -H "x-api-key: $SOCIALCRAWL_API_KEY" \
"https://www.socialcrawl.dev/v1/youtube/channel?handle=veritasium"
```
The matching cheap-channel capture (`request_id: req-6E8w9qfDa5BzXwQN`) had `ext.country: "US"` and `ext.public_email: null`. Rick Astley on the same lane: `GB`, email null, `request_id: req-ItSrl7PsIlZdKmz9`.
Handle spelling: **`RickAstleyYT`**, not `RickAstley`. Wrong handle 404s (refunded). This is the one time the extra letters are the point.
### The 60-credit About call is the authenticated email
When the cheap call's `public_email` is null and you need the About-tab address, call `/v1/youtube/channel/about`:
```bash
curl -s -H "x-api-key: $SOCIALCRAWL_API_KEY" \
"https://www.socialcrawl.dev/v1/youtube/channel/about?handle=veritasium"
```
Captured 2026-09-05 (`credits_used: 60`, `request_id: req-rLl8CSEH0t5Nzj2n`):
```json
{
"success": true,
"platform": "youtube",
"endpoint": "/v1/youtube/channel/about",
"credits_used": 60,
"cached": false,
"request_id": "req-rLl8CSEH0t5Nzj2n",
"data": {
"author": {
"id": "UCHnyfMqiRRG1u-2MsSQLbXA",
"username": "@veritasium",
"display_name": "Veritasium",
"followers": 21200000,
"posts_count": 530,
"url": "https://www.youtube.com/channel/UCHnyfMqiRRG1u-2MsSQLbXA",
"ext": {
"country": "United States",
"public_email": "contact@veritasium.com",
"followers_approximate": true
}
}
}
}
```
Rick Astley about (`request_id: req-EBoed1P9LU6SJf8R`, 60 credits): `neil@rickastley.co.uk` / `United Kingdom`. Both emails and countries match the 2026-09-04 measurement. About-country is the English label (`United States`), not the cheap lane's `US`. Do not mix ISO-2 and English in one unlabeled column.
This is the About-tab ["View email address"](https://support.google.com/youtube/answer/57955) control the channel owner opted into — not the Google Account login email. YouTube Help documents the owner path as Customization → Profile → Contact info → enter email → Publish ([channel profile](https://support.google.com/youtube/answer/2657964)). That is the control this 60-credit call reads. It is not a scrape of the description, which is why the 1-credit channel call was null on both handles.
YouTube's public Data API `channels` resource has `snippet.country` and **no** business-enquiry email field ([channels resource](https://developers.google.com/youtube/v3/docs/channels)). That is why this lane exists, and why it costs more.
Billing: 60 credits **when an address is returned**. Do not treat `/v1/youtube/channel/about` as a bulk 1-credit filter. Pattern: cheap channel first; call about only if that `public_email` came back null and you need the authenticated address.
## What else comes back — country, phone, and professional category?
Email is one leaf. Instagram account country, join month, public phone, and Instagram professional category are why a single about call beats a Get Email widget. If you are building [agency outreach](/solutions/agencies) lists, country and category come back on the same payload so you are not enriching a second time.
### Country and join month on 9/9; the rest is sparse on purpose
`GET /v1/instagram/profile/about` · 1 credit · 2026-09-05. Nulls are data.
| handle | followers | country | public_email | public_phone | join month (`account_created`) | category (`business_category`) |
|---|---:|---|---|---|---|---|
| natgeo | 268,623,965 | United States | null | null | November 2010 | null |
| nasa | 104,401,035 | United States | public-inquiries@hq.nasa.gov | null | August 2013 | null |
| mrbeast | 89,235,780 | United States | null | null | November 2015 | null |
| garyvee | 11,910,470 | United States | null | +12129315731 | January 2011 | null |
| hubermanlab | 7,959,247 | United States | null | null | December 2016 | Scientist |
| mkbhd | 5,212,155 | United States | business@mkbhd.com | null | March 2012 | null |
| sid.and.listen | 1,298,727 | United States | TeamSid@gersh.com | null | December 2024 | Digital creator |
| aliabdaal | 1,159,843 | United Kingdom | null | null | April 2012 | Entrepreneur |
| veritasium | 359,086 | Australia | null | null | April 2012 | null |
| **9 of 9 billed** | | **9/9** | **3/9** | **1/9** | **9/9** | **3/9** |
That 3/9 email rate is the Instagram email finder working as designed — it returns the Contact-panel address when the account publishes one, and `null` when it does not.
Phone example: `garyvee` → `public_phone: "+12129315731"`, email null, country United States, joined January 2011. Category examples: `aliabdaal` Entrepreneur (UK), `hubermanlab` Scientist, `sid.and.listen` Digital creator. Category also comes back on ordinary `/v1/instagram/profile` when Instagram publishes it.
Join month is a **label** (`"August 2013"`), not a day-precise ISO date. `joined_at` was null on every about row. Do not invent a day.
We chose well-known public creators, not a random sample. Smallest Instagram account **in this run** is `veritasium` at 359,086 followers. Country still came back at that size. We did not re-verify "a few hundred followers" today.
An influencer email finder UI often prints an unlabeled "Location: United States" on a sample card, mixed with **audience** geo. This field is **account** country — Instagram's "Account based in" signal, not a viewer-majority chart.
### Single lookups are fine; bulk region filter is not (yet)
Instagram country and email sit on a **metered lane**. High-volume region filtering needs a capacity uplift before we offer it. Single lookups in this showcase are unaffected. Do not plan "filter 10k handles by country for 1 credit each" on the 1-credit price.
### Ghost handles refund
`zzq_not_a_real_handle_20260903` on Instagram about → 404 `RESOURCE_NOT_FOUND` (`handle_unresolved`), `credits_used: 0`, `request_id: req-u1kVJOrEZv6l2moT`:
```json
{
"success": false,
"credits_used": 0,
"request_id": "req-u1kVJOrEZv6l2moT",
"error": {
"type": "RESOURCE_NOT_FOUND",
"message": "The account could not be resolved from any available source, and no source reported a reason. You were not charged for this request.",
"status": 404,
"reason": "handle_unresolved"
}
}
```
YouTube cheap channel ghost `thischanneldoesnotexist99999` returned the same shape (`request_id: req-UTZKDz05lTvVM9vH`). Message on both: "You were not charged for this request." We did not ghost-probe YouTube `channel/about` (60 credits when an address is returned); we proved the refund on the 1-credit channel lane.
Null email and missing handle are different outcomes. One is a successful 1-credit lookup. The other is a 404 with zero credits.
## How do you start using this?
Replay the Instagram email finder. Five minutes, one API key — enough to check a handle before it goes on a creator outreach list.
1. Get a key at [signup](/auth/register). Free credits come with it. Auth header is `x-api-key`.
2. Replay Instagram about (1 credit):
```bash
curl -s -H "x-api-key: $SOCIALCRAWL_API_KEY" \
"https://www.socialcrawl.dev/v1/instagram/profile/about?handle=nasa"
```
3. If you also have a YouTube handle: cheap `/v1/youtube/channel?handle=veritasium` (1 credit) first. Only then `/v1/youtube/channel/about` (60 credits) if you need the authenticated address.
4. Next: paste the same curl into the [Explorer](/explorer) to see your data before writing a single line. Then the [Instagram](/platforms/instagram) and [YouTube](/platforms/youtube) hubs, [endpoint pricing](/docs/endpoint-pricing), and the [API reference](/docs/api-reference).
This showcase spent **134 credits** (9×1 Instagram about + 3×1 Instagram profile + 2×1 YouTube channel + 2×60 YouTube about + 0 on two 404s). Replay NASA about first if you want to see a public email land.
We only return fields the account already published. Instagram Contact is visible to anyone who taps Contact; YouTube email only if the owner provided one. If you then send commercial email, [CAN-SPAM](https://www.ftc.gov/business-guidance/resources/can-spam-act-compliance-guide-business) still applies: accurate headers, non-deceptive subject, opt-out honored within 10 business days. That covers B2B too.
Paste the NASA curl into the [Explorer](/explorer) if you want to watch the envelope before you wire it. Credit math for both lanes is on [per-endpoint credit costs](/docs/endpoint-pricing). If you need 1 vs 60, or null vs 404, the FAQ below is the short version.
## Frequently asked questions
### How do you find an Instagram email?
Call `GET /v1/instagram/profile/about` with the handle and an `x-api-key` header. 1 credit. `author.ext.public_email` is the public Contact-panel address when the account publishes one. Ordinary `/v1/instagram/profile` only has the address if it is also written in the bio (`sid.and.listen`); NASA's about-panel email does not appear on profile. That is how you run an Instagram email finder as an API call instead of a username widget.
### Does Instagram show email on a profile?
Only if the owner turned on professional Contact (email/phone) or wrote an address in the bio. Personal accounts usually publish none. Country and join month can still come back on about when email is null (`natgeo`). The [About this account](https://help.instagram.com/697961817256175/) panel itself does not list email.
### How do you get a YouTube channel email?
Cheap `/v1/youtube/channel` (1 credit) returns `public_email` only when the channel wrote one in the public description — both handles in this run were null. `/v1/youtube/channel/about` (60 credits) is the authenticated About-tab address: `contact@veritasium.com`, `neil@rickastley.co.uk`. Not the Google login email. Not a bulk 1-credit filter.
### Is the Instagram public email always there?
No. 3 of 9 about rows in the 2026-09-05 harvest had a non-null `public_email`; 6 of 9 were `null` on a successful 1-credit call. Null means unpublished. A missing handle is a 404 with `credits_used: 0`, which is a different outcome. An Instagram email finder that always returns an inbox is inventing data.
### Can you get Instagram phone and country from the same call?
Yes — same about payload. Country 9/9 in this run. Phone 1/9 (`garyvee`, `+12129315731`). Category 3/9. Join month 9/9 as `account_created` (month-year label).
### What's the difference between Instagram public email and YouTube authenticated email?
Instagram `public_email` is the professional Contact / bio address (1 credit). YouTube about `public_email` is the owner-opt-in "View email address" control (60 credits). Cheap YouTube channel country is ISO-2; about-country is the English label. Do not treat them as one column.
### How much does an Instagram email lookup cost?
An Instagram email finder on about is **1 credit** per lookup, billed whether email is present or null. Ghost handle: 0 credits. YouTube authenticated email is **60 credits** when an address is returned. This post is single lookups; Instagram country/email is on a metered lane, so do not plan bulk region filters on the 1-credit price.