# 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. A sealed envelope sliding out of a photo-grid profile tile, the public contact address an Instagram email finder reads when a creator publishes one. ## 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. A sealed envelope behind a latch on a video-player about panel, the authenticated YouTube channel email the cheap channel call does not carry. ## 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.