Author
The schema-2 author and profile objects. Every field, its type, and which platforms fill it.
Any endpoint that returns a profile, creator, page or channel returns it in the profile shape below, whichever platform it came from. Posts and comments carry a smaller author object, a subset of the profile. One parser reads both from every platform. This page describes schema 2, which every key gets from October 4, 2026; what changed is on Schema 2.
Where profiles sit in data
| Endpoint returns | Path |
|---|---|
One profile (/v1/instagram/profile, /v1/youtube/channel, …) | data.author |
| A list of profiles (followers, search results, reactions, …) | data.items[].author |
| The author of a post | data.post.author or data.items[].post.author |
| The author of a comment | data.comment.author or data.items[].comment.author |
A list of profiles also carries data.total (the platform's own total, not the size of this page) and data.truncated, both null when the platform does not say.
Author on a post or comment
| Field | Type | Nullable | Description |
|---|---|---|---|
id | string | Yes | The account's platform ID. On Reddit it is the account's t2_… ID, prefix kept, the same value as the Reddit profile's id. null where the source gives none: usually on Threads, Twitter/X and Pinterest posts, and then the response lists the path in unavailable. |
username | string | Yes | Handle. |
display_name | string | Yes | Display name or full name. On Reddit usually null: Reddit shows a username, and the t2_… ID that arrives in this place goes to author.id. |
avatar_url | string | Yes | Profile picture. |
verified | boolean | Yes | Whether the account is verified. |
For followers, bio and the rest, call the platform's profile endpoint with the username or id.
Profile
Example
/v1/instagram/profile?handle=nasa, shortened:
{
"success": true,
"platform": "instagram",
"endpoint": "/v1/instagram/profile",
"schema_version": "2",
"data": {
"author": {
"id": "528817151",
"username": "nasa",
"display_name": "NASA",
"avatar_url": "https://scontent-phl2-1.cdninstagram.com/v/…",
"bio": "Making the seemingly impossible, possible. ✨",
"verified": true,
"followers": 104294818,
"followers_approximate": null,
"following": 90,
"posts_count": 4942,
"likes_count": null,
"url": "https://www.instagram.com/nasa/",
"location": null,
"external_url": "https://www.nasa.gov",
"private": false,
"joined_at": null,
"last_post_at": "2026-10-03T14:10:18.000Z",
"ext": { "business_category": null }
}
},
"unavailable": [],
"credits_used": 10,
"credits_remaining": 9990,
"request_id": "req_d6ad52ab1f9f",
"cached": false,
"idempotent_replay": false,
"charge_reason": "miss",
"free_call": false
}Fields
Every field is always present; a value the platform does not give is null.
| Field | Type | Nullable | Description |
|---|---|---|---|
id | string | No | The platform's ID for the account, always a string. Never parse it as a number. On a Reddit user it is the account's t2_… ID with the prefix kept, so it matches author.id on that user's posts and comments. On a LinkedIn person it is the member URN (ACoAA…), the same value as author.id on that member's posts; the vanity slug is username, and the numeric member id is ext.member_id. The one exception is /v1/linkedin/search/people/by-url, whose source gives no URN: there id is the slug. A LinkedIn company keeps its numeric company id. |
username | string | Yes | Handle. |
display_name | string | Yes | Display name or full name. |
avatar_url | string | Yes | Profile picture. |
bio | string | Yes | Bio or description. |
verified | boolean | Yes | Whether the account is verified. |
followers | integer | Yes | Followers or subscribers, as a whole number. Exact on Instagram, and on TikTok when an unrounded figure is available. On YouTube above 1,000 subscribers it is the rounded figure YouTube publishes (three significant digits). |
followers_approximate | boolean | Yes | true when followers is a rounded or published figure rather than an exact count: LinkedIn people-list display figures, TikTok when no exact count is available, YouTube at 1,000 subscribers or more, and rounded Facebook counts. null when the platform gives an exact count or does not say. |
following | integer | Yes | Accounts this account follows. |
posts_count | integer | Yes | Total posts or videos. |
likes_count | integer | Yes | Total likes received across the account's content, where shown. |
url | string | Yes | Link to the profile itself, always on the platform's own site. Never the bio link. |
location | string | Yes | An ISO region code such as US, or free-text location, where shown. |
external_url | string | Yes | The website or bio link, where shown. |
private | boolean | Yes | Whether the account is private. |
joined_at | string | Yes | When the account was created, ISO 8601 UTC ending in Z. |
last_post_at | string | Yes | When the account last posted, ISO 8601 UTC ending in Z. |
ext | object | Yes | Platform-specific fields. See below. |
A count is null when the platform does not show it and 0 only when it really is zero.
Extension fields (ext)
Platform-specific extras on the full profile. Each one appears only on platforms that provide it, so treat every ext field as optional. ext is null when a profile has no extras. Keys are snake_case on every platform, _id values are strings and _at values are ISO 8601 UTC times.
| Field | Type | Nullable | Description |
|---|---|---|---|
ext.social_context | string | Yes | Social context text the platform shows on the profile. |
ext.account_created | string | Yes | Account creation date as the platform shows it. |
ext.country | string | Yes | Country of the account. |
ext.former_usernames | string[] | Yes | Earlier usernames, where shown. |
ext.public_email | string | Yes | The first email address found in the bio. |
ext.contact_email | string | Yes | Opt in with contact_email=1 on /v1/instagram/profile, /v1/youtube/channel and /v1/youtube/channel/about. When a bio lists two or more addresses, this is the one the creator gives for personal contact, copied exactly. It stays null if the bio has fewer than two addresses, if all of them point to a manager, agency or brand, or if no single personal address stands out. ext.public_email is not affected. |
ext.public_phone | string | Yes | Public phone number on the profile. |
ext.business_category | string | Yes | Business category shown on the profile. |
ext.hd_avatar_url | string | Yes | Higher-resolution profile picture. |
ext.website | string | Yes | Website listed on the profile. |
ext.cover_url | string | Yes | Cover or banner image. |
ext.page_active | boolean | Yes | Whether a Facebook page is active. |
ext.employee_count | integer | Yes | LinkedIn company employee count. |
ext.employee_count_range.start | integer | Yes | Lower bound of the LinkedIn company size range. |
ext.employee_count_range.end | integer | Yes | Upper bound of the LinkedIn company size range. |
ext.founded_year | integer | Yes | Year the company was founded. |
ext.specialities | string[] | Yes | Company specialties listed on LinkedIn. |
ext.industries | string[] | Yes | Company industries. |
ext.headquarters | string | Yes | Company headquarters. |
ext.locations | string[] | Yes | Company office locations. |
ext.hashtags | string[] | Yes | Hashtags the company follows or lists. |
ext.funding | string | Yes | Company funding details. |
ext.address | string | Yes | Address on a Facebook page. |
ext.price_range | string | Yes | Price range on a Facebook page. |
ext.rating | string | Yes | Rating on a Facebook page. |
ext.rating_count | integer | Yes | Number of ratings on a Facebook page. |
ext.talking_about_count | integer | Yes | Facebook "talking about this" count. |
ext.business_hours | string[] | Yes | Opening hours on a Facebook page. |
ext.links | string[] | Yes | Links listed on the profile. |
ext.ad_library_page_id | string | Yes | Page ID to use with the Facebook Ad Library endpoints. |
ext.ad_library_status | string | Yes | Whether the page is running ads. |
ext.urn | string | Yes | LinkedIn URN. |
ext.is_top_voice | boolean | Yes | LinkedIn Top Voice badge. |
ext.is_premium | boolean | Yes | LinkedIn Premium member. |
ext.is_creator | boolean | Yes | LinkedIn creator mode. |
ext.is_influencer | boolean | Yes | LinkedIn influencer flag. |
ext.is_open_to_work | boolean | Yes | LinkedIn Open to Work flag. |
ext.is_hiring | boolean | Yes | LinkedIn Hiring flag. |
ext.member_id | string | Yes | LinkedIn numeric member ID, where the source gives one. |
ext.company_id | string | Yes | LinkedIn company ID, for the company/* endpoints. |
ext.reaction_type | string | Yes | The reaction a member left, on reaction lists. |
ext.keywords | string | Yes | YouTube channel keywords. |
ext.total_views | integer | Yes | Total channel views. |
ext.joined_at_timestamp | string | Yes | Account creation time as a timestamp. |
ext.topic_categories | string[] | Yes | YouTube topic categories. |
ext.banner_external_url | string | Yes | YouTube channel banner. |
ext.made_for_kids | boolean | Yes | YouTube made-for-kids flag. |
ext.hidden_subscriber_count | boolean | Yes | true when the YouTube channel hides its subscriber count. |
ext.related_playlists | object | Yes | YouTube related playlists, such as uploads. |
ext.topic_ids | string[] | Yes | YouTube topic IDs. |
ext.unsubscribed_trailer | string | Yes | YouTube channel trailer shown to non-subscribers. |
ext.join_policy | string | Yes | Who can join a group or community. |
ext.is_nsfw | boolean | Yes | Subreddit or account marked adult. |
ext.rules | string[] | Yes | Subreddit rules. |
ext.weekly_active_users | integer | Yes | Subreddit weekly visitors. |
ext.weekly_contributions | integer | Yes | Subreddit weekly contributions. |
ext.rules_text | string | Yes | Subreddit rules as text. |
ext.language | string | Yes | Language set on the account or community. |
ext.post_karma | integer | Yes | Reddit post karma. |
ext.comment_karma | integer | Yes | Reddit comment karma. |
ext.awardee_karma | integer | Yes | Reddit awardee karma. |
ext.trophy_count | integer | Yes | Reddit trophies. |
ext.banner_url | string | Yes | Profile banner image. |
ext.social_links | string[] | Yes | Social links listed on the profile. |
ext.group | string | Yes | Group details, on group responses. |
Which platforms fill which fields
Every platform that returns profiles uses this shape, and id is never null. The table covers the platforms the API launched with that return profiles. The others return the same shape, and each response's unavailable list names the fields it could not fill. yes means the platform can fill the field (it may still be null on a given row); a blank means it never does.
| Platform | following | verified | joined_at | posts_count | likes_count | private | url | followers | avatar_url | bio | location | external_url |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| yes | yes | yes | yes | yes | yes | yes | yes | |||||
| yes | yes | yes | yes | yes | yes | yes | yes | yes | ||||
| yes | yes | yes | yes | yes | yes | |||||||
| yes | yes | yes | yes | yes | yes | |||||||
| Threads | yes | yes | yes | yes | yes | yes | ||||||
| TikTok | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | ||
| Twitter/X | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | |
| YouTube | yes | yes | yes | yes | yes | yes |
On Instagram, TikTok, Threads and Twitter/X, url is built from the handle when the platform sends none, and the link in the bio is always external_url. On a Reddit user, id is the t2_… account ID and display_name is null; a subreddit's id is its name.
unavailable
When a field the platform normally fills is null on every profile in a response, the response lists its path in unavailable, for example "author.followers" or "items[].author.joined_at". bio, external_url and location are never listed, because null there usually means the account has none. Fields a platform never shows publicly are never listed either:
| Platform | Never listed in unavailable |
|---|---|
likes_count, joined_at | |
| TikTok | joined_at |
following, posts_count, private | |
| Threads | following, posts_count, likes_count, joined_at |
| YouTube | following, likes_count, private |
following, posts_count, likes_count | |
posts_count, likes_count, private, joined_at |
For fields that are always null on a platform, see Metric substitutions.
Returned by
Endpoints that return a profile or a list of profiles use this shape on:
Facebook · Instagram · LinkedIn · Reddit · Threads · TikTok · Twitter/X · YouTube
To see which native platform field feeds each unified field, read Field equivalence.