Skip to main content
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

Every account carries the same shape. Exactly one of 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.

Instagram

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 returns 429 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 takes url, 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 as lookup_account. Pass url, or pass platform with one of handle or id. The result is synchronous and includes the same credit fields.

Not in this endpoint

This endpoint returns account metadata. It does not list an account’s items, search results, comments, or media bytes.

Next steps