Find a creator's public emails
Beta GET /v1/creators/emails
GET /v1/creators/emails
Email addresses a creator published themselves, each with the URLs where it was seen (extra.email_sources, each typed social_profile, link_in_bio, linked_profile or website_page). Reads the creator's bio and links, the link-in-bio pages they link (Linktree, Komi, Pillar, Lnk.Bio, Linkme and other link hubs), the profiles they link, and up to three websites they declare (homepage and contact pages, robots.txt honoured). Addresses are never guessed or checked by sending mail; kind is business, management or personal when the address itself says so. extra.partial is true when a page failed or was skipped, so an empty result is then not proof that no address exists. Pass a platform and handle, or a profile url.
- Cost: 1 credit
- Status: Beta. Built and tested against recorded responses; the shape may still gain fields.
- Cache: Results are kept up to 30 days; send
max_age_daysto reuse them for free. - Timeout: A request still running after about 25 seconds answers
202with a job to poll (Batch and jobs).
Parameters#
| Name | Type | Required | Description |
|---|---|---|---|
url | URL | one of | Profile URL on any supported platform. Accepted hosts: youtube.com, tiktok.com, instagram.com, x.com, twitter.com, twitch.tv, facebook.com, linktr.ee, komi.io, pillar.io, lnk.bio, link.me. |
handle | string | one of | Handle; needs platform. Also accepted as username. |
platform | string | no | Platform of handle. One of youtube, tiktok, instagram, twitter, twitch, facebook. Also accepted values: x for twitter. |
Send at least one of url, handle. If you send several, the first listed is used and the rest are ignored.
Every request also accepts:
trim:truefor a smaller response withoutnullfields andextra.raw:trueto also get the platform's original object asraw.max_age_days: accept a cached result up to this many days old, for 0 credits (Caching).
Example request#
Set your key in the environment first (see Authentication).
curl -G "https://api.socialscrape.io/v1/creators/emails" \
-H "x-api-key: $SOCIALSCRAPE_API_KEY" \
--data-urlencode "platform=instagram" \
--data-urlencode "handle=miguelangeles"import os
import requests
params = {
"platform": "instagram",
"handle": "miguelangeles",
}
res = requests.get(
"https://api.socialscrape.io/v1/creators/emails",
headers={"x-api-key": os.environ["SOCIALSCRAPE_API_KEY"]},
params=params,
)
body = res.json()
if body["ok"]:
print(body["data"])
else:
print(body["error"]["code"], body["error"]["message"])const url = new URL("https://api.socialscrape.io/v1/creators/emails");
url.search = new URLSearchParams({
"platform": "instagram",
"handle": "miguelangeles"
}).toString();
const res = await fetch(url, {
headers: { "x-api-key": process.env.SOCIALSCRAPE_API_KEY! },
});
const body = await res.json();
if (body.ok) {
console.log(body.data);
} else {
console.error(body.error.code, body.error.message);
}{
"nodes": [
{
"name": "SocialScrape Find a creator's public emails",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
0,
0
],
"parameters": {
"method": "GET",
"url": "https://api.socialscrape.io/v1/creators/emails",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "platform",
"value": "instagram"
},
{
"name": "handle",
"value": "miguelangeles"
}
]
},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "x-api-key",
"value": "={{ $env.SOCIALSCRAPE_API_KEY }}"
}
]
}
}
}
],
"connections": {}
}Example response#
This is a sample from a recorded response, email addresses are replaced with [email protected]. Status 200.
{
"ok": true,
"credits_charged": 1,
"credits_remaining": 4999,
"cached": false,
"cached_at": null,
"request_id": "req_a1854c867698335ba2ddc1d7",
"data": {
"object": "creator_emails",
"platform": "instagram",
"handle": "miguelangeles",
"profile_url": "https://www.instagram.com/miguelangeles/",
"emails": [
{
"email": "[email protected]",
"source_url": "https://www.instagram.com/miguelangeles/",
"kind": "management"
},
{
"email": "[email protected]",
"source_url": "https://www.instagram.com/miguelangeles/",
"kind": "management"
}
],
"extra": {
"email_sources": [
{
"email": "[email protected]",
"sources": [
{
"type": "social_profile",
"url": "https://www.instagram.com/miguelangeles/"
}
]
},
{
"email": "[email protected]",
"sources": [
{
"type": "social_profile",
"url": "https://www.instagram.com/miguelangeles/"
}
]
}
],
"expanded_website_urls": [
"http://irlangel.com/"
],
"failed_scans": [],
"link_in_bio_urls": [],
"partial": false,
"scanned_profile_urls": [
"https://www.instagram.com/miguelangeles/"
],
"skipped_urls": [],
"source_linked_profile_urls": []
}
},
"cursor": null,
"has_more": null
}Response#
A CreatorEmails object in data.
See Data models for every field. The envelope around data is described in Responses.
Errors#
Failures are free: credits_charged is 0. Branch on error.code, never on the message.
| Code | HTTP | Retry | Meaning |
|---|---|---|---|
invalid_params | 400 | no | A parameter is missing, unknown or has the wrong type. |
unsupported_url | 400 | no | The URL is not one this endpoint accepts (wrong platform or form). |
not_found | 404 | no | The platform says this profile, post or item does not exist. |
Every request can also fail with the account and platform errors listed on the Errors page.
Example error:
{
"ok": false,
"error": {
"code": "not_found",
"message": "The platform says this profile, post or item does not exist.",
"retryable": false
},
"credits_charged": 0,
"request_id": "req_c8df66979b928371c67b3116"
}Also served at#
These paths answer the same request, so code written for other APIs keeps working: /v1/find-creator-emails. See Switching from ScrapeCreators.
Related endpoints#
- Find a creator's other social profiles (
GET /v1/creators/social-profiles)