GET /v1/accounts/lookup returns one YouTube, Instagram, or TikTok account in the same request. There is no job to poll. For one item, see Look up an item.
Use
url alone, or platform with exactly one of handle or id. Do not combine naming forms. id names a YouTube channel; Instagram and TikTok take handle. URL-encode query values, as --data-urlencode does.
The account
youtube, tiktok, instagram, and meta_ad_library is filled: the block named by platform. unavailableFields lists every core field the platform did not show, so you never have to guess whether a null means zero or means unknown.
What each platform shows
YouTube
youtube.followersApproximate is true when YouTube reports a rounded subscriber count. YouTube does not show following counts, so stats.following is null and listed in unavailableFields.
stats.items is the posts count the profile card states in words. A card that rounds the figure — “1.2M posts” — states no exact count, so stats.items is null and appears in unavailableFields. stats.views is never shown. Instagram publishes no country or joined date on a public profile, so country and joinedAt are always null. It publishes no category either, so the instagram block carries none.
instagram.private says whether the profile is private. A private profile still has a page, and its counts are still shown; its posts are not, so listing its items fails with unavailable_private for it.
TikTok
tiktok.likes is the total likes across the account’s videos. TikTok publishes that total in a counter that overflows on a very popular account; an overflowed value is not a count, so tiktok.likes is null rather than a negative number. TikTok shows neither a video count nor a view total, so stats.items and stats.views are null. There is no banner, no links list, no country, and no joined date.
Freshness
maxAge defaults to 1h and accepts up to 1d. A stored account observation confirmed within the window can be served without contacting the platform. Observations are immutable. A later observation records changed public values.
Credits
The charge is for the account page, not for each field.
usage.creditsCharged is the number charged in this response.
At a zero balance a live lookup answers 402 insufficient_credits before the platform is contacted; a repeat within your maxAge is free and keeps answering from the store.
Headers
Rate limits
If no platform request can start, the endpoint returns429 rate_limited with details.retryAfterSeconds. Wait that many seconds before trying again. Errors are free.
Errors
Meta Ad Library advertisers are not accounts here. Find them with advertiser search instead.
Naming the same account in a list
This endpoint takesurl, or platform with handle or id. List an account’s items takes one account selector instead, in three forms: a natural key such as youtube:UCLA_DiR1FfKNvjuUpBHmylQ or instagram:528817151, <platform>:@handle such as youtube:@NASA, or the account URL. A looked-up account’s own id is already a natural key, so it can be passed straight through as account. See Naming the account for the full grammar, including why a handle always carries its @.
From an agent
The MCP server exposes the same operation aslookup_account. Pass url, or pass platform with one of handle or id. The result is synchronous and includes the same credit fields.