Skip to content

Reference

The unified schema

The objects below cover every platform. A Post from TikTok and a Post from YouTube have the same field names and the same types, so the code that reads one reads the other unchanged.

Two rules that shape everything

Null is not zero. A field is null when the platform does not publish it and zero when the platform publishes a zero. Averaging across a set where those were conflated gives a wrong answer that looks plausible, which is the worst kind.

Nothing is discarded. Normalising is additive. Pass include_raw=true and the original upstream payload comes back beside the normalised one, so a field we have not modelled yet is still reachable.

The envelope

Every successful response has the same outer shape. data is the object, meta is the accounting, and pagination appears only where a list can continue.

response envelope
{
  "success": true,
  "data": { /* the unified object */ },
  "pagination": { "cursor": null, "hasMore": false, "count": 1 },
  "meta": {
    "platform": "youtube",
    "endpoint": "youtube.channel",
    "creditsCharged": 1,
    "cached": false,
    "cacheAgeSeconds": null,
    "durationMs": 412,
    "requestId": "req_01JB8Z..."
  },
  "raw": { /* only when include_raw=true */ }
}

Creator

21 fields

A channel, profile, or page. Follower counts mean subscribers on YouTube and followers everywhere else: the nearest equivalent, always in the same field.

FieldTypeNotes
platformenumyoutube · instagram · facebook · twitter · tiktok · linkedin · reddit · threads · bluesky · truthsocial · snapchat · kwai · pinterest · rumble · twitch · kick · spotify · apple-music · soundcloud · github · google · amazon · walmart · ebay · redfin · zillow · linktree · komi · pillar · linkbio · linkme · telegram
idstringThe platform-native id: channel id, user id, numeric id.
handlestring | nullWithout the @. Null where the platform has no handle.
displayNamestring | null—
biostring | null—
avatarUrlstring | nullHighest resolution the platform exposes.
bannerUrlstring | null—
urlstring | nullCanonical public URL.
verifiedboolean | nullA verification badge the platform shows on the account. Null where the platform has no public badge or does not expose it.
followerCountnumber | nullSubscribers, followers, or the platform equivalent.
followingCountnumber | null—
likeCountnumber | nullTotal likes where the platform exposes one. Null means not exposed.
postCountnumber | nullVideos, posts, or reels, depending on what the platform counts.
viewCountnumber | nullLifetime views where exposed (YouTube, TikTok).
isPrivateboolean | null—
isBusinessboolean | nullThe platform classifies the account as a business or organisation, not a person or creator. Null where it draws no such line. Every Facebook Page counts, including Pages for public figures.
categorystring | null—
locationstring | nullSelf-declared, not verified.
externalLinksstring[]Empty array, never null.
createdAtstring | nullSome platforms publish only a coarse join date.
fetchedAtstringISO 8601. When we read it, not when it changed.

Post

22 fields

A video, Short, reel, image, carousel, or text post. Engagement fields are null when the platform does not expose them, which is not the same as zero.

FieldTypeNotes
platformenumyoutube · instagram · facebook · twitter · tiktok · linkedin · reddit · threads · bluesky · truthsocial · snapchat · kwai · pinterest · rumble · twitch · kick · spotify · apple-music · soundcloud · github · google · amazon · walmart · ebay · redfin · zillow · linktree · komi · pillar · linkbio · linkme · telegram
idstringThe platform-native id: channel id, user id, numeric id.
typeenumvideo · short · image · carousel · text · live · story · reel · unknown
urlstring | null—
titlestring | nullNull on platforms without titles.
textstring | nullCaption or description.
authorIdstring | null—
authorHandlestring | null—
authorNamestring | null—
thumbnailUrlstring | null—
mediaUrlsstring[]—
durationSecondsnumber | nullNull for anything that is not timed media.
viewCountnumber | nullNull means not exposed. Zero means zero.
likeCountnumber | nullNull when the creator has hidden it.
commentCountnumber | null—
shareCountnumber | nullNull on platforms with no share metric.
hashtagsstring[]Parsed from the text, without the #.
mentionsstring[]Parsed from the text, without the @.
taggedUsersstring[]?Accounts tagged in the media itself, which is not the same list as mentions. A tag can name an account the caption never does. Absent means the platform does not report tags; [] means it reports none.
isSponsoredboolean | nullOnly where the platform discloses it.
publishedAtstring | nullISO 8601 where exact, otherwise the platform’s own relative text.
fetchedAtstringISO 8601.

Transcript

10 fields

Captions as one text block plus timed cues. The text block is what most pipelines want; the cues are there when you need to seek.

FieldTypeNotes
platformenum—
postIdstringThe video this transcript belongs to.
urlstring | null—
languagestring | nullBCP-47 code of the track that was returned.
isAutoGeneratedboolean | nullTrue for machine captions, which are measurably less accurate.
textstringThe whole transcript, cues joined.
cuesTranscriptCue[]{ start, end, text }, where end is null when the platform omits a duration.
durationSecondsnumber | null—
source'captions' | 'asr' | nullThe platform's own caption track, or audio we transcribed ourselves. Null when a producer cannot tell which.
fetchedAtstring—

Comment

14 fields

A comment or a reply. Replies carry a parentId; top-level comments do not.

FieldTypeNotes
platformenumyoutube · instagram · facebook · twitter · tiktok · linkedin · reddit · threads · bluesky · truthsocial · snapchat · kwai · pinterest · rumble · twitch · kick · spotify · apple-music · soundcloud · github · google · amazon · walmart · ebay · redfin · zillow · linktree · komi · pillar · linkbio · linkme · telegram
idstringThe platform-native id: channel id, user id, numeric id.
postIdstring | null—
parentIdstring | nullNull for a top-level comment.
textstring—
authorIdstring | null—
authorHandlestring | null—
authorNamestring | null—
authorAvatarUrlstring | null—
likeCountnumber | null—
replyCountnumber | null—
isPinnedboolean | null—
isAuthorReplyboolean | nullTrue when the post’s author wrote it.
publishedAtstring | null—

Product

21 fields

A listing on a marketplace. Price is a number beside its currency, never a formatted string: a price you cannot compare or sort is not a price. Null means the marketplace did not say, which is different from zero: an out-of-stock item has no price, it does not cost nothing.

FieldTypeNotes
platformenumyoutube · instagram · facebook · twitter · tiktok · linkedin · reddit · threads · bluesky · truthsocial · snapchat · kwai · pinterest · rumble · twitch · kick · spotify · apple-music · soundcloud · github · google · amazon · walmart · ebay · redfin · zillow · linktree · komi · pillar · linkbio · linkme · telegram
idstringThe platform-native id: channel id, user id, numeric id.
titlestring | null—
brandstring | null—
descriptionstring | null—
urlstring | null—
imageUrlsstring[]—
pricenumber | nullWhat a buyer pays now.
currencystring | nullISO 4217, as the marketplace stated it.
listPricenumber | nullThe struck-through reference price. Both are kept, so a discount is measurable.
availabilityenum | nullin_stock · out_of_stock · preorder · discontinued · unknown
ratingnumber | null—
reviewCountnumber | null—
sellerNamestring | null—
shipsFromstring | null—
marketplacestring | nullThe storefront this was read from, e.g. amazon.co.uk. The same id is a different product, price and currency per country.
categoriesstring[]—
featureBulletsstring[]—
attributesRecord<string, string>Open key/value specifications. Marketplaces publish a different set per category, so a fixed shape would discard most of it.
reviewsProductReview[]The sample a product page carries inline, not a full review list.
fetchedAtstring—

PropertyListing

33 fields

A home for sale or to let. Written to serve US, European and Indian portals from one shape, which is why area carries its unit and a price carries its qualifier. A number without either is a misquote on half the world’s listings.

FieldTypeNotes
platformenumyoutube · instagram · facebook · twitter · tiktok · linkedin · reddit · threads · bluesky · truthsocial · snapchat · kwai · pinterest · rumble · twitch · kick · spotify · apple-music · soundcloud · github · google · amazon · walmart · ebay · redfin · zillow · linktree · komi · pillar · linkbio · linkme · telegram
idstringThe platform-native id: channel id, user id, numeric id.
urlstring | null—
listingTypeenum | nullsale · rent
statusenum | nullactive · pending · under_offer · sold · rented · off_market · unknown. Sold and off_market are distinct: a withdrawn listing may return, a sold one will not.
pricenumber | null—
currencystring | null—
priceQualifierstring | null“Offers over”, “guide price”, “per month”. These change what the number means.
pricePerAreanumber | nullIn the same unit as areaUnit.
addressAddressSplit into street, locality, region and postcode, with the portal’s own single line kept alongside.
latitudenumber | null—
longitudenumber | null—
bedsnumber | null—
bathsnumber | null—
receptionsnumber | nullUK and European listings lead with reception rooms; US ones have no equivalent.
areanumber | null—
areaUnitenum | nullsqft · sqm. Never assumed, because assuming feet mis-scales a European listing by 10.76×.
lotAreanumber | nullThe plot, where the portal separates it from the floor area.
lotAreaUnitenum | nullsqft · sqm. Carried separately, because a portal can state the two in different units.
propertyTypestring | null—
yearBuiltnumber | null—
descriptionstring | null—
imageUrlsstring[]—
floorPlanUrlsstring[]—
agentNamestring | null—
agentPhonestring | nullOnly where the portal publishes it to a logged-out visitor.
brokerageNamestring | null—
amenitiesRecord<string, string>Open record: HOA dues, council tax band, EPC rating, carpet area.
schoolsSchool[]—
priceHistoryPriceEvent[]Empty where a portal serves it only after the page loads.
listedAtstring | null—
updatedAtstring | nullWhen the portal last changed the listing, where it says.
fetchedAtstring—

Address

6 fields
FieldTypePresentDescription
formattedstring | nullalwaysThe whole address as one line, as the source published it. Some sources publish only this line, so the other address fields can be null while this is set.
streetstring | nullalways
localitystring | nullalwaysCity or town.
regionstring | nullalwaysState, province or region.
postalCodestring | nullalways
countrystring | nullalwaysCountry as the source gives it, which may be a code such as US or a name.

AgentStat

3 fields
FieldTypePresentDescription
labelstring | nullalwaysWhat the figure measures, such as total sales volume.
valuestring | nullalwaysThe figure as the source displays it.
numericValuenumber | nullalways`value` as a number, where it can be read as one.

JobPosting

11 fields
FieldTypePresentDescription
platformone of 32 stringsalways
idstring | nullalwaysIdentifier for the posting. Where the source shows none, this is the posting URL.
titlestring | nullalways
companystring | nullalways
locationstring | nullalways
viastring | nullalwaysThe job board the posting was listed through, as in "via LinkedIn".
descriptionstring | nullalwaysSnippet of the job description shown with the result.
urlstring | nullalways
tagsstring[]always
postedAtstring | nullalways
fetchedAtstringalwaysWhen this record was retrieved, as an ISO 8601 timestamp.

NewsArticle

9 fields
FieldTypePresentDescription
platformone of 32 stringsalways
positionnumber | nullalwaysRank of the article in the results, starting at 1.
titlestring | nullalways
sourcestring | nullalwaysName of the outlet that published the article.
descriptionstring | nullalwaysSnippet of the article shown with the result.
linkstring | nullalways
thumbnailUrlstring | nullalways
publishedAtstring | nullalwaysWhen the article was published, as the result displays it. Often relative, such as "2 hours ago", and not converted to a date.
fetchedAtstringalwaysWhen this record was retrieved, as an ISO 8601 timestamp.

Offer

10 fields
FieldTypePresentDescription
sellerNamestring | nullalways
sellerIdstring | nullalways
pricenumber | nullalwaysPrice of the item in this offer, in `currency`. Shipping is separate, in `shippingPrice`.
currencystring | nullalwaysISO 4217 currency code for the amounts in this record, such as USD or EUR.
shippingPricenumber | nullalwaysShipping cost in `currency`. 0 when shipping is free.
conditionstring | nullalwaysItem condition as the offer states it, such as New or Used - Like New.
isPrimeboolean | nullalwaysTrue when the offer shows a Prime badge. An offer without the badge is null, not false.
fulfilledByPlatformboolean | nullalwaysWhether the marketplace itself fulfils the order, as with Fulfilled by Amazon.
isBuyBoxboolean | nullalwaysWhether this is the featured offer the product page sells by default. Null where the marketplace has no featured offer or did not say.
shipsFromstring | nullalwaysThe party the item ships from, as the offer names it.

Place

16 fields
FieldTypePresentDescription
platformone of 32 stringsalways
idstring | nullalways
namestring | nullalways
addressAddressalways
latitudenumber | nullalways
longitudenumber | nullalways
phonestring | nullalways
websitestring | nullalwaysThe business's own website.
urlstring | nullalwaysLink to the place's listing on the map service.
ratingnumber | nullalwaysAverage star rating, out of 5.
reviewCountnumber | nullalways
priceLevelstring | nullalwaysPrice band as the listing shows it, such as `$` or `$$`. The scale varies by locale.
categoriesstring[]always
hoursRecord<string, string[]>alwaysOpening hours keyed by lowercase weekday, such as `monday`. Each value is the hours text as the listing published it.
imageUrlsstring[]always
fetchedAtstringalwaysWhen this record was retrieved, as an ISO 8601 timestamp.

PriceEvent

5 fields
FieldTypePresentDescription
datestring | nullalwaysWhen the event happened, in ISO 8601 format.
pricenumber | nullalwaysPrice at this event, in `currency`.
currencystring | nullalwaysISO 4217 currency code for the amounts in this record, such as USD or EUR.
eventstring | nullalwaysWhat happened, as the source words it, such as Listed, Price Changed or Sold.
sourcestring | nullalwaysWhere the event was recorded, such as a listing service or public records.

ProductReview

10 fields
FieldTypePresentDescription
idstring | nullalways
ratingnumber | nullalwaysStar rating the reviewer gave, out of 5.
titlestring | nullalways
textstring | nullalways
authorstring | nullalways
publishedAtstring | nullalwaysWhen the review was posted: an ISO 8601 timestamp where the date could be read, otherwise the date text as the marketplace shows it.
helpfulCountnumber | nullalwaysNumber of people who marked the review helpful.
negativeCountnumber | nullalwaysNumber of people who marked the review unhelpful.
verifiedPurchaseboolean | nullalways
badgesstring[]alwaysLabels the marketplace shows on the review, such as Verified Purchase.

RealEstateAgent

16 fields
FieldTypePresentDescription
platformone of 32 stringsalways
idstring | nullalways
namestring | nullalways
urlstring | nullalways
photoUrlstring | nullalways
brokerageNamestring | nullalways
licenseNumberstring | nullalways
phonestring | nullalways
biostring | nullalways
languagesstring[]always
serviceAreasstring[]always
ratingnumber | nullalways
reviewCountnumber | nullalways
salesStatsAgentStat[]alwaysSales figures the source publishes for the agent, such as deals closed or average days on market. Which figures appear varies by source.
listingsPropertyListing[]alwaysProperty listings shown on the agent's profile.
fetchedAtstringalwaysWhen this record was retrieved, as an ISO 8601 timestamp.

School

5 fields
FieldTypePresentDescription
namestring | nullalways
ratingnumber | nullalwaysSchool rating on a scale of 1 to 10.
gradeRangestring | nullalways
distanceKmnumber | nullalways
institutionTypestring | nullalways

SearchResultItem

16 fields
FieldTypePresentDescription
platformone of 32 stringsalways
positionnumber | nullalwaysRank of the result on the page it was read from, starting at 1, in the order the source served it.
idstring | nullalwaysThe listing id on its platform, such as an Amazon ASIN. Where the source shows no id, this is the result URL, or the title when there is no URL.
titlestring | nullalways
urlstring | nullalways
thumbnailUrlstring | nullalways
pricenumber | nullalwaysPrice shown on the result, in `currency`. Where a price range is shown, the lowest price.
currencystring | nullalwaysISO 4217 currency code for the amounts in this record, such as USD or EUR.
listPricenumber | nullalwaysThe struck-through reference price shown on the result, when there is one.
ratingnumber | nullalwaysAverage customer rating, out of 5.
reviewCountnumber | nullalways
sellerNamestring | nullalways
availabilityin_stock | out_of_stock | preorder | discontinued | unknown | nullalwaysStock status. `unknown` means the listing showed a status that could not be read as one of the other values.
badgesstring[]alwaysLabels shown on the result, such as Best Seller or Amazon's Choice.
isSponsoredboolean | nullalwaysTrue for a paid placement. False only where the source marks a result as not sponsored; a result with no sponsored label is null.
fetchedAtstringalwaysWhen this record was retrieved, as an ISO 8601 timestamp.