Endpoint reference
How 499 endpoints share one request and response shape. The resource-type model, the shared envelope, and how to find the exact endpoint for any site in the directory or the playground.
Endpoint reference
Chocodata exposes 499 endpoints across 237 sites and 17 categories. They are not 499 different APIs. They are one API, parameterized by {site} and {resource}, so this page documents the shared shape once and points you to the browsable directory for the specifics of any single endpoint.
If you have read Core concepts, you already know the request shape. This page is the map: what the resource types are, what the shared request and response look like, and where to look up an exact endpoint.
The shared request shape
Every dedicated endpoint is the same GET:
GET https://api.chocodata.com/api/v1/{site}/{resource}?api_key=YOUR_KEY&query=...
| Part | Meaning | Examples |
|---|---|---|
{site} | The target site | walmart, ebay, indeed, zillow, github, youtube |
{resource} | The page type on that site | product, search, job, property, profile, video |
query | The identifier, URL, or keyword | a product ID, a job URL, "running shoes" |
Common optional parameters that many endpoints accept:
| Param | Type | Description |
|---|---|---|
domain | enum | Regional storefront / locale where the site has one (com, co.uk, de). Supported values vary by site. See Country, region & language. |
language | string | Content language as xx_YY (en_US, de_DE). |
pages | int | For search resources, number of consecutive result pages to fetch (each page counts as a request). |
add_html | boolean | Attach the raw page HTML under html in the response. |
Resource types
Rather than memorize 499 endpoints, learn the resource types. A small set of resources covers the vast majority of endpoints, and each behaves consistently wherever it appears.
| Resource | Returns | Typical sites |
|---|---|---|
search | Ranked results for a keyword query (web results or commerce cards, depending on the site) | search engines, marketplaces, job boards, app stores |
product | A single product / item page with price, variants, ratings, images | e-commerce sites |
article | A single news or blog article with body, author, dates | news and media sites |
job | A single job posting with title, company, location, description | job boards |
property | A single real-estate listing | real-estate portals |
profile | A public profile page | social, developer, and directory sites |
quote | A finance quote / instrument page | finance and crypto sites |
video | A single video page with metadata | video platforms |
post | A single social or forum post | social and community sites |
package | A single package / library page | developer registries |
listing | A single classifieds or directory listing | classifieds and local directories |
Categories you will see in the directory include: AI, Automotive, B2B & Companies, Developer, E-commerce, Finance & Crypto, Food, Jobs, Knowledge & Academic, Local & Directories, News & Media, Real Estate, Reviews, Search Engines, Social, and Travel.
The two flavors of search
search is the most widely available resource, and its response adapts to the site:
- On a search engine (
google,bing, …), each result carries web fields:title,url,snippet,position. - On a marketplace or board (
walmart,ebay,indeed, …), each card carries domain fields: price, rating, sponsored flags, or job metadata.
Both share the same request shape. See the Search endpoint for the full request and both response shapes.
The shared response shape
Dedicated endpoints return a flat JSON object of named fields for the requested resource. The exact field set depends on the resource (a product has price and variations; an article has articleBody and author), but the conventions are constant:
- Field names are stable and typed. Numbers are numbers, not strings.
- A field is
nullwhen the site did not publish it, not when extraction failed. You still get a valid object. - Search-style resources return an array (
productsorresults) plus pagination metadata.
Every successful response also carries informational headers (Asa-Cost, Asa-Resolved-Url, Asa-Source-Status, Asa-Attempts, Asa-Extractor-Version). Errors share one body shape with a machine-readable error code. See Error codes.
We document two resources in depth as the canonical pattern:
- Product endpoint - the specific-item pattern (one identifier in, one rich object out).
- Search endpoint - the list pattern (a keyword in, ranked results out).
Read those two and you can read any endpoint, because every other dedicated endpoint is a variation on one of them.
App Stores
Dedicated endpoints for the Apple App Store (appstore) and Google Play (googleplay). Search a storefront, pull a single app’s full listing, or page through user reviews. Every call is the same GET https://api.chocodata.com/api/v1/{target}/{resource}?api_key=YOUR_KEY&... shape. For a guided tour see Scraping Social Media & App Stores.
appstore.search
Search the Apple App Store by keyword and get ranked app cards.
GET https://api.chocodata.com/api/v1/appstore/search?api_key=YOUR_KEY&term=whatsapp&country=us&limit=5
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
term | string | ✅ yes | - | Search keywords |
country | enum | - | us | Two-letter App Store storefront (us, gb, de, jp, …) |
limit | int | - | 10 | Number of result cards to return |
{
"query": "whatsapp",
"page": 1,
"total_results": 5,
"results": [
{
"position": 1,
"id": "310633997",
"track_id": "310633997",
"bundle_id": "net.whatsapp.WhatsApp",
"title": "WhatsApp Messenger",
"seller_name": "WhatsApp Inc.",
"primary_genre": "Social Networking",
"genres": ["Social Networking", "Utilities"],
"price": 0,
"formatted_price": "Free",
"currency": "USD",
"rating": 4.68698,
"reviews_count": 18082844,
"content_advisory_rating": "12+",
"version": "26.22.76",
"release_date": "2009-05-04T02:43:49Z",
"minimum_os_version": "15.1",
"url": "https://apps.apple.com/us/app/whatsapp-messenger/id310633997"
}
/* 4 more cards */
]
}
appstore.product
Full listing for a single Apple App Store app by numeric ID.
GET https://api.chocodata.com/api/v1/appstore/product?api_key=YOUR_KEY&id=310633997&country=us
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id | string | ✅ yes | - | The numeric App Store track ID |
country | enum | - | us | Two-letter App Store storefront |
{
"id": "310633997",
"track_id": "310633997",
"bundle_id": "net.whatsapp.WhatsApp",
"title": "WhatsApp Messenger",
"seller_name": "WhatsApp Inc.",
"primary_genre": "Social Networking",
"genres": ["Social Networking", "Utilities"],
"price": 0,
"formatted_price": "Free",
"currency": "USD",
"rating": 4.68698,
"rating_current_version": 4.68698,
"reviews_count": 18082844,
"content_advisory_rating": "12+",
"version": "26.22.76",
"current_version_release_date": "2026-06-07T16:47:53Z",
"release_date": "2009-05-04T02:43:49Z",
"release_notes": "We update the app regularly to fix bugs…",
"file_size_bytes": 370200576,
"minimum_os_version": "15.1",
"description": "WhatsApp from Meta is a free messaging and calling app…",
"artwork_url": "https://is1-ssl.mzstatic.com/image/thumb/…",
"screenshot_urls": [],
"supported_devices": ["iPhone5s-iPhone5s", "iPadAir-iPadAir"],
"languages": ["AR", "BN", "EN"],
"advisories": ["Infrequent/Mild Profanity or Crude Humor"],
"kind": "software",
"url": "https://apps.apple.com/us/app/whatsapp-messenger/id310633997?uo=4",
"seller_url": "http://www.whatsapp.com/",
"artist_view_url": "https://apps.apple.com/us/developer/whatsapp-inc/id310634000?uo=4"
}
appstore.reviews
A page of user reviews for a single Apple App Store app.
GET https://api.chocodata.com/api/v1/appstore/reviews?api_key=YOUR_KEY&id=310633997&country=us&page=1&sort=mostRecent
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id | string | ✅ yes | - | The numeric App Store track ID |
country | enum | - | us | Two-letter App Store storefront |
page | int | - | 1 | Review page to fetch |
sort | enum | - | mostRecent | mostRecent · mostHelpful |
{
"id": "310633997",
"country": "us",
"page": 1,
"sort": "mostRecent",
"total_results": 50,
"reviews": [
{
"id": "14181597952",
"author": "Arale soto aguilar",
"author_url": "https://itunes.apple.com/us/reviews/id1642272657",
"rating": 3,
"title": "The new glitch",
"body": "It is happening to me when I try to text the screen turns black…",
"version": "26.22.76",
"date": "2026-06-14T05:37:59-07:00",
"vote_sum": 0,
"vote_count": 0
}
/* 49 more reviews */
]
}
googleplay.product
Full listing for a single Google Play app by package ID.
GET https://api.chocodata.com/api/v1/googleplay/product?api_key=YOUR_KEY&id=com.whatsapp
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id | string | ✅ yes | - | The Android package ID (e.g. com.whatsapp) |
country | enum | - | us | Two-letter Play storefront |
language | string | - | region default | Content language as xx_YY |
{
"id": "com.whatsapp",
"package_id": "com.whatsapp",
"title": "WhatsApp Messenger",
"developer": "WhatsApp LLC",
"developer_url": "http://www.whatsapp.com/",
"description": "Simple. Reliable. Private.",
"category": "COMMUNICATION",
"operating_system": "ANDROID",
"content_rating": "Everyone",
"price": 0,
"currency": "USD",
"is_free": true,
"rating": 4.661951065063477,
"reviews_count": 236991524,
"icon": "https://play-lh.googleusercontent.com/Gqxk4T0uZsDwFp07DE-508hkyvcNmgF…",
"screenshots": [
"https://play-lh.googleusercontent.com/OBVqgRK7eerY0GPfK8AOzitu5oE9ecC6kG4kURTCb1K41gpqVsN0WjmJwJh-wX8…",
"https://play-lh.googleusercontent.com/GQF4h3VL-kklOrVS_f1QRAJJZa2zQyVNcFbKdOIkvI_Pcu1op0Sy3uiry…"
],
"url": "https://play.google.com/store/apps/details?id=com.whatsapp"
}
googleplay.search
Search Google Play by keyword and get ranked app cards.
GET https://api.chocodata.com/api/v1/googleplay/search?api_key=YOUR_KEY&q=whatsapp
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
q | string | ✅ yes | - | Search keywords |
country | enum | - | us | Two-letter Play storefront |
language | string | - | region default | Content language as xx_YY |
{
"query": "whatsapp",
"page": 1,
"total_results": 20,
"results": [
{
"position": 1,
"id": "com.whatsapp",
"package_id": "com.whatsapp",
"title": "WhatsApp Messenger",
"currency": "USD",
"url": "https://play.google.com/store/apps/details?id=com.whatsapp"
}
/* 19 more cards */
]
}
Social Media
Dedicated endpoints across Reddit, YouTube, TikTok, X (Twitter), Instagram, Facebook, and LinkedIn. Pull posts and their scores, video metadata, transcripts, comments, profiles, company pages, and job postings. Every call is the same GET https://api.chocodata.com/api/v1/{target}/{resource}?api_key=YOUR_KEY&... shape. See the Scraping Social Media & App Stores guide for an overview.
reddit.subreddit
A page of posts from a subreddit, in a chosen sort order.
GET https://api.chocodata.com/api/v1/reddit/subreddit?api_key=YOUR_KEY&subreddit=news&sort=hot&limit=5
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
subreddit | string | ✅ yes | - | Subreddit name without the r/ prefix |
sort | enum | - | hot | hot · new · top · rising |
t | enum | - | site default | Time window for top (hour · day · week · month · year · all) |
limit | int | - | 25 | Number of posts to return |
{
"subreddit": "news",
"sort": "hot",
"total_results": 5,
"posts": [
{
"id": "t3_1u6hmvz",
"title": "Jeffco Public Schools says 61 boys found on girls' sports rosters were mascots, managers",
"score": 13360,
"num_comments": 352,
"upvote_ratio": 0.9787,
"awards": 0,
"author": "HazyDavey68",
"author_id": "t2_ayj7l5o9",
"subreddit": "news",
"permalink": "https://www.reddit.com/r/news/comments/1u6hmvz/…",
"external_url": "https://www.denverpost.com/2026/06/13/…",
"domain": "denverpost.com",
"created": "2026-06-15T14:06:56.173000+0000"
}
/* 4 more posts */
]
}
reddit.post
A single Reddit post plus its comment tree, with scores.
GET https://api.chocodata.com/api/v1/reddit/post?api_key=YOUR_KEY&subreddit=news&post_id=1u6hmvz
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
subreddit | string | ✅ yes | - | Subreddit name without the r/ prefix |
post_id | string | ✅ yes | - | The post’s base-36 ID (with or without the t3_ prefix) |
sort | enum | - | top | Comment sort: top · new · best · controversial · old |
{
"post": {
"id": "t3_1u6hmvz",
"title": "Jeffco Public Schools says 61 boys found on girls' sports rosters were mascots, managers",
"score": 13367,
"num_comments": 353,
"upvote_ratio": 0.9787,
"author": "HazyDavey68",
"subreddit": "news",
"permalink": "https://www.reddit.com/r/news/comments/1u6hmvz/…",
"external_url": "https://www.denverpost.com/2026/06/13/…",
"domain": "denverpost.com",
"body": null,
"created": "2026-06-15T14:06:56.173000+0000"
},
"comments_count": 13,
"sort": "top",
"comments": [
{
"id": "t1_orsif6b",
"parent_id": null,
"depth": 0,
"score": 4561,
"author": "ByRWBadger",
"body": "…",
"created": "2026-06-15T14:12:53.614000+0000",
"permalink": "https://www.reddit.com/r/news/comments/1u6hmvz/comment/orsif6b/"
}
/* 12 more comments */
]
}
reddit.user
A user’s public profile plus their recent posts and comments.
GET https://api.chocodata.com/api/v1/reddit/user?api_key=YOUR_KEY&username=spez
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
username | string | ✅ yes | - | Reddit username without the u/ prefix |
{
"profile": {
"username": "spez",
"profile_url": "https://www.reddit.com/user/spez",
"bio": "Reddit CEO",
"icon": "https://www.redditstatic.com/icon.png/",
"title": "overview for spez"
},
"total_results": 25,
"items": [
{
"type": "comment",
"id": "t1_optfyql",
"short_id": "optfyql",
"title": "/u/spez on Steve, Jen, and Drew here - Ask Us Anything!",
"subreddit": "RDDT",
"body": "…",
"permalink": "https://www.reddit.com/r/RDDT/comments/1tvs5jj/…/optfyql/",
"created": "2026-06-05T00:51:55+00:00"
}
/* 24 more items */
]
}
reddit.search
Keyword search across Reddit. Results may be posts, comments, or subreddits.
GET https://api.chocodata.com/api/v1/reddit/search?api_key=YOUR_KEY&q=climate
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
q | string | ✅ yes | - | Search keywords |
subreddit | string | - | - | Restrict the search to one subreddit |
sort | enum | - | relevance | relevance · hot · top · new · comments |
t | enum | - | site default | Time window (hour · day · week · month · year · all) |
{
"query": "climate",
"subreddit": null,
"sort": "relevance",
"total_results": 25,
"results": [
{
"position": 1,
"id": "t5_2qhx3",
"short_id": "2qhx3",
"result_type": "subreddit",
"title": "Information about the world's climate",
"permalink": "https://www.reddit.com/r/climate/"
}
/* 24 more results */
]
}
youtube.search
Search YouTube and get the organic video results plus any promoted ad slots, as structured JSON.
GET https://api.chocodata.com/api/v1/youtube/search?api_key=YOUR_KEY&search_query=web%20scraping
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
search_query | string | yes | - | The search terms |
{
"query": "web scraping",
"engine": "youtube",
"results_count": 19,
"organic_results": [
{
"position": 1,
"title": "Learn Web Scraping in 5 Minutes (NO PRIOR KNOWLEDGE)",
"link": "https://www.youtube.com/watch?v=hHQlcnubuFI",
"video_id": "hHQlcnubuFI",
"channel": { "name": "CodeHead", "link": "https://www.youtube.com/channel/UCFVteOob_YXJHPaGTqlDV2Q", "verified": false },
"views": "124K",
"published": "3mo ago",
"length": "4:53",
"thumbnail": { "static": "https://i.ytimg.com/vi/hHQlcnubuFI/hq720.jpg", "rich": null }
}
/* more results */
],
"ads": [],
"ads_count": 0
}
The old duplicate video_results array is gone: read organic_results for the full video rows and ads for any promoted slots.
youtube.suggest
Autocomplete and related-search terms for a query, straight from YouTube’s search box. Handy for keyword and content research.
GET https://api.chocodata.com/api/v1/youtube/suggest?api_key=YOUR_KEY&query=web%20scraping
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | yes | - | The seed query |
language | string | - | en | Suggestion language (hl) |
country | string | - | us | Suggestion region (gl) |
{
"query": "web scraping",
"related_searches": [
"web scraping amazon product",
"web scraping flight prices python",
"web scraping with gemini",
"web scraping weather data python"
],
"related_count": 10
}
youtube.video
Metadata for a single YouTube video: title, description, view and like counts, channel, and related videos. Accepts a video_id or a full url.
GET https://api.chocodata.com/api/v1/youtube/video?api_key=YOUR_KEY&video_id=dQw4w9WgXcQ
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
video_id | string | one of | - | The 11-character YouTube video ID |
url | string | one of | - | A watch?v=, youtu.be, or bare-ID URL |
{
"video_id": "dQw4w9WgXcQ",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"type": "video",
"title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"description": "The official video for Never Gonna Give You Up...",
"view_count": 1787241493,
"like_count": 19187485,
"duration_seconds": 213,
"keywords": ["rick astley", "never gonna give you up"],
"category": "Music",
"is_live": false,
"is_family_safe": true,
"publish_date": "2009-10-24T23:57:33-07:00",
"channel_id": "UCuAXFkgsw1L7xaCfnd5JJOw",
"channel_name": "Rick Astley",
"channel_url": "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw",
"thumbnail": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hq720.jpg",
"related": [ /* related video rows */ ],
"related_count": 12
}
youtube.shorts
A single YouTube Short. Returns the same rich object as youtube.video plus is_short: true. Pass an individual Short (video_id, a /shorts/<id> URL, or a bare ID), not a channel handle.
GET https://api.chocodata.com/api/v1/youtube/shorts?api_key=YOUR_KEY&video_id=YA_kX8hu1gg
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
video_id | string | one of | - | The Short’s video ID |
url | string | one of | - | A /shorts/<id>, watch?v=, or bare-ID URL |
{
"video_id": "YA_kX8hu1gg",
"url": "https://www.youtube.com/shorts/YA_kX8hu1gg",
"type": "video",
"title": "This Plane Takes Off in 12 Seconds",
"view_count": 11746153,
"like_count": 375941,
"duration_seconds": 19,
"channel_name": "MrBeast",
"is_short": true,
"related": [ /* related video rows */ ],
"related_count": 20
}
youtube.channel
A channel’s profile and one page of its uploads. Pages are cursor-based: follow next_page_url (or pass the next_page_token as page_token) for the next page. One call returns exactly one page.
GET https://api.chocodata.com/api/v1/youtube/channel?api_key=YOUR_KEY&channel=@MrBeast
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
channel | string | one of | - | A handle (@MrBeast), channel ID (UC...), or channel URL |
page_token | string | one of | - | A cursor from a prior response (next page) |
tab | enum | - | videos | videos shorts streams about |
country | string | - | us | Region code |
{
"channel": "MrBeast",
"channel_id": "UCX6OQ3DkcsbYNE6H8uQQuVA",
"channel_name": "MrBeast",
"handle": "@MrBeast",
"tab": "videos",
"subscriber_count": 505000000,
"subscriber_count_text": "505M subscribers",
"video_count": 990,
"videos": [
{
"position": 1,
"id": "iYlODtkyw_I",
"title": "Survive 30 Days Chained To A Stranger, Win $250,000",
"url": "https://www.youtube.com/watch?v=iYlODtkyw_I",
"channel": "MrBeast",
"views": "22,258,174 views",
"published": "19 hours ago"
}
/* more videos */
],
"videos_count": 30,
"page": 1,
"next_page_token": "eyJjIjoiNHFtRnNnTFpDUk...",
"next_page_url": "/api/v1/youtube/channel?page_token=eyJjIjoiNHFtRnNnTFpDUk...",
"has_more": true
}
max_pages no longer exists. To deep-paginate, follow next_page_url until has_more is false.
youtube.playlist
A playlist’s header (title, owner, view count) and its full ordered list of videos.
GET https://api.chocodata.com/api/v1/youtube/playlist?api_key=YOUR_KEY&playlist_id=PLjVLYmrlmjGfSYkgH-_jgC8KMxyRzq7US
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
playlist_id | string | one of | - | The PL... playlist ID |
url | string | one of | - | A playlist?list=<id> URL |
{
"playlist_id": "PLjVLYmrlmjGfSYkgH-_jgC8KMxyRzq7US",
"title": "Web Scraping Full Free Course by WsCube Tech",
"channel": "WsCube Tech",
"video_count": 7,
"views": 196099,
"videos": [
{
"position": 1,
"id": "FagmjKdOIDs",
"title": "Web Scraping Course For Beginners 2024",
"url": "https://www.youtube.com/watch?v=FagmjKdOIDs",
"channel": "WsCube Tech",
"views": "203K views",
"published": "2 years ago"
}
/* more videos */
],
"videos_returned": 7
}
youtube.comments
One page of comments on a video, with author, like count, and reply count. Cursor-based, like youtube.channel. Sort by top or newest; the applied sort is carried inside the token across pages.
GET https://api.chocodata.com/api/v1/youtube/comments?api_key=YOUR_KEY&video_id=dQw4w9WgXcQ&sort=top
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
video_id | string | one of | - | The 11-character YouTube video ID |
url | string | one of | - | A watch URL |
page_token | string | one of | - | A cursor from a prior response (next page) |
sort | enum | - | top | top newest |
country | string | - | us | Region code |
{
"video_id": "dQw4w9WgXcQ",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"page": 1,
"sort_applied": "top",
"results_count": 20,
"comments": [
{
"id": "Ugw...",
"text": "can confirm: he never gave us up",
"author": "@YouTube",
"author_is_verified": true,
"published": "1 year ago",
"like_count": 261000,
"like_count_text": "261K",
"reply_count": 961,
"reply_count_text": "961"
}
/* more comments */
],
"next_page_token": "eyJjIjoiRWcwU0MyUl...",
"next_page_url": "/api/v1/youtube/comments?page_token=eyJjIjoiRWcwU0MyUl...",
"has_more": true
}
max_pages, pages_fetched, and the raw continuation are gone. Follow next_page_url for more.
youtube.transcript
The timed transcript of a video, returned as timestamped segments and as one joined string. Falls back to auto-generated (ASR) captions when no manual track exists.
GET https://api.chocodata.com/api/v1/youtube/transcript?api_key=YOUR_KEY&video_id=dQw4w9WgXcQ
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
video_id | string | one of | - | The 11-character YouTube video ID |
url | string | one of | - | A watch URL |
lang | string | - | en | Preferred caption language; one of available_languages |
format | enum | - | both | both segments text |
units | enum | - | seconds | seconds ms (segment time units) |
{
"video_id": "dQw4w9WgXcQ",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"transcript_available": true,
"language": "en",
"language_name": "English",
"is_generated": false,
"source": "native",
"segment_count": 61,
"time_unit": "seconds",
"word_count": 487,
"char_count": 2089,
"available_languages": ["en", "de-DE", "ja", "pt-BR", "es-419"],
"segments": [
{ "text": "Never gonna give you up", "start": 43.04, "duration": 2.12 }
/* more segments */
],
"text": "We're no strangers to love, you know the rules and so do I..."
}
When a video has no captions, the call still returns 200 with transcript_available: false and a reason (age_restricted, members_only, transcripts_disabled, none_found, or video_unavailable).
youtube.email
The public contact links a channel lists on its About page (both the structured Links widget and the description), plus any public email. Each link is tagged with where it came from.
GET https://api.chocodata.com/api/v1/youtube/email?api_key=YOUR_KEY&channel=@AlexTheAnalyst
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
channel | string | yes | - | A handle (@AlexTheAnalyst), channel ID, or URL |
country | string | - | us | Region code |
{
"channel": "@AlexTheAnalyst",
"channel_id": "UC7cs8q-gJRlGwj4A8OmCmXg",
"channel_name": "Alex The Analyst",
"emails": [],
"email_count": 0,
"links": [
{ "title": "Website", "display": "analystbuilder.com", "url": "https://www.analystbuilder.com/", "from": "links_section" },
{ "title": null, "display": "@Alex_TheAnalyst", "url": "https://twitter.com/Alex_TheAnalyst", "from": "description" }
],
"links_count": 4,
"source": "public_description",
"reveal_available": false
}
Only links and emails a creator publishes publicly are returned. The reCAPTCHA-gated “business email” reveal is a separate capability and is not included here (reveal_available: false).
tiktok.video
Metadata and engagement stats for a single TikTok video.
GET https://api.chocodata.com/api/v1/tiktok/video?api_key=YOUR_KEY&url=https://www.tiktok.com/@tiktok/video/7106594312292453675
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | ✅ yes | - | Full TikTok video URL (a bare numeric video ID is also accepted) |
{
"id": "7106594312292453675",
"url": "https://www.tiktok.com/@tiktok/video/7106594312292453675",
"socialPlatform": "tiktok",
"title": "how many frogs did you find? 🐸 check out tiktok's #Minecraft community today! @Gorillo",
"description": "how many frogs did you find? 🐸 check out tiktok's #Minecraft community today! @Gorillo",
"create_time": 1654632929,
"created_at": "2022-06-07T20:15:29.000Z",
"author": {
"id": "107955",
"uniqueId": "tiktok",
"nickname": "TikTok",
"verified": true,
"signature": "One TikTok can make a big impact",
"url": "https://www.tiktok.com/@tiktok"
},
"stats": {
"plays": 563500,
"likes": 98700,
"comments": 1339,
"shares": 127,
"saves": 58626
},
"hashtags": ["Minecraft"],
"thumbnail": "https://p16-common-sign.tiktokcdn-us.com/…",
"music": { "title": "original sound", "author_name": "TikTok" }
}
tiktok.profile
A TikTok creator’s public profile and aggregate stats.
GET https://api.chocodata.com/api/v1/tiktok/profile?api_key=YOUR_KEY&username=tiktok
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
username | string | ✅ yes | - | TikTok handle without the @ prefix |
{
"uniqueId": "tiktok",
"nickname": "TikTok",
"signature": "One TikTok can make a big impact",
"verified": true,
"secUid": "MS4wLjABAAAAv7iSuuXDJGDvJkmH_vz1qkDZYo1apxgzaxdBSeIuPiM",
"id": "107955",
"create_time": 1425144149,
"created_at": "2015-02-28T17:22:29.000Z",
"avatar": "https://p16-common-sign.tiktokcdn-us.com/…",
"url": "https://www.tiktok.com/@tiktok",
"socialPlatform": "tiktok",
"stats": {
"followerCount": 94400000,
"followingCount": 3,
"heartCount": 459900000,
"videoCount": 1452
}
}
tiktok.oembed
The lightweight oEmbed record for a TikTok video: title, author, thumbnail, and ready-to-paste embed HTML.
GET https://api.chocodata.com/api/v1/tiktok/oembed?api_key=YOUR_KEY&url=https://www.tiktok.com/@tiktok/video/7106594312292453675
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | ✅ yes | - | Full TikTok video URL |
{
"id": "7106594312292453675",
"url": "https://www.tiktok.com/@tiktok/video/7106594312292453675",
"socialPlatform": "tiktok",
"type": "video",
"version": "1.0",
"title": "how many frogs did you find? 🐸 check out tiktok's #Minecraft community today! @Gorillo",
"author_name": "TikTok",
"author_unique_id": "tiktok",
"author_url": "https://www.tiktok.com/@tiktok",
"provider_name": "TikTok",
"provider_url": "https://www.tiktok.com",
"thumbnail_url": "https://p16-common-sign.tiktokcdn.com/…",
"thumbnail_width": 576,
"thumbnail_height": 1024,
"embed_type": "video",
"html": "<blockquote class=\"tiktok-embed\" cite=\"https://www.tiktok.com/@tiktok/video/7106594312292453675\">…</blockquote>"
}
xtwitter.tweet
A single tweet (post) from X with text, engagement counts, and author.
GET https://api.chocodata.com/api/v1/xtwitter/tweet?api_key=YOUR_KEY&id=20
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id | string | ✅ yes | - | The numeric tweet (post) ID |
{
"id": "20",
"id_str": "20",
"url": "https://x.com/jack/status/20",
"socialPlatform": "twitter",
"text": "just setting up my twttr",
"full_text": "just setting up my twttr",
"lang": "en",
"created_at": "2006-03-21T20:50:14.000Z",
"favorite_count": 311977,
"reply_count": 17945,
"conversation_count": 17945,
"is_edited": false,
"user": {
"screen_name": "jack",
"name": "jack",
"id_str": "12",
"is_blue_verified": true,
"profile_image_url_https": "https://pbs.twimg.com/profile_images/…/azNjKOSH_normal.jpg",
"url": "https://x.com/jack"
},
"entities": { "urls": [], "user_mentions": [], "hashtags": [], "symbols": [] },
"media": []
}
instagram.profile
An Instagram account’s public profile and counts.
GET https://api.chocodata.com/api/v1/instagram/profile?api_key=YOUR_KEY&username=nasa
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
username | string | ✅ yes | - | Instagram handle without the @ prefix |
{
"id": "528817151",
"username": "nasa",
"full_name": "NASA",
"url": "https://www.instagram.com/nasa/",
"biography": "Making the seemingly impossible, possible. ✨",
"profile_pic_url": "https://scontent.cdninstagram.com/v/t51.2885-19/…",
"is_verified": true,
"is_private": false,
"follower_count": 104408885,
"following_count": 91,
"posts_count": 4818,
"og_description": "104M Followers, 95 Following, 4,818 Posts - See Instagram photos and videos from NASA"
}
instagram.post
A single Instagram post by its shortcode: caption, media, author, and engagement.
GET https://api.chocodata.com/api/v1/instagram/post?api_key=YOUR_KEY&shortcode=DWm8OQKlKvC
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
shortcode | string | ✅ yes | - | The post shortcode (the segment after /p/ in the URL) |
{
"id": "DWm8OQKlKvC",
"shortcode": "DWm8OQKlKvC",
"media_id": "3866042192364874690",
"url": "https://www.instagram.com/p/DWm8OQKlKvC/",
"media_type": "carousel",
"is_video": false,
"title": "NASA launches Artemis II to the moon!",
"author": "agpfoto",
"author_id": "19918380",
"author_url": "https://www.instagram.com/agpfoto/",
"images": [
"https://scontent.cdninstagram.com/v/t51.82787-15/…"
],
"thumbnail": "https://scontent.cdninstagram.com/v/t51.82787-15/…",
"dimensions": { "width": 1080, "height": 1440 },
"caption": "NASA launches Artemis II to the moon!",
"hashtags": [],
"comments": 1079,
"taken_at": "2026-04-02T00:02:44.000Z",
"location": {
"id": "254918491",
"name": "Launch Complex 39 Press Site",
"slug": "launch-complex-39-press-site"
}
}
facebook.page
Search Facebook for pages by name and get matching page cards with like and follower counts.
GET https://api.chocodata.com/api/v1/facebook/page?api_key=YOUR_KEY&page=NASA
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
page | string | ✅ yes | - | A page name or query |
{
"query": "NASA",
"page": 1,
"results_count": 8,
"total_results": 8,
"results": [
{
"position": 1,
"id": "100044561550831",
"title": "NASA - National Aeronautics and Space Administration",
"url": "https://www.facebook.com/NASA/",
"currency": "USD",
"thumbnail": "https://scontent.xx.fbcdn.net/v/t39.30808-1/…",
"type": "page",
"page": "NASA",
"page_id": "100044561550831",
"name": "NASA - National Aeronautics and Space Administration",
"tagline": "Explore the universe and discover our home planet.",
"image": "https://scontent.xx.fbcdn.net/v/t39.30808-1/…",
"likes": 28622651,
"followers": 28622651,
"talking_about_count": 141519
}
/* 7 more page cards */
]
}
facebook.post
A single Facebook post by URL: author, caption, media, and engagement counts.
GET https://api.chocodata.com/api/v1/facebook/post?api_key=YOUR_KEY&url=https://www.facebook.com/{page}/posts/{post_id}
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | ✅ yes | - | Full Facebook post URL |
{
"id": "1148...",
"page": "NASA",
"page_id": "100044561550831",
"post_id": "1148...",
"url": "https://www.facebook.com/NASA/posts/1148…",
"author": "NASA - National Aeronautics and Space Administration",
"caption": "Explore the universe and discover our home planet.",
"title": "Explore the universe and discover our home planet.",
"image": "https://scontent.xx.fbcdn.net/v/t39.30808-1/…",
"reactions_count": 12840,
"comments_count": 321,
"shares_count": 188
}
linkedin.jobsearch
Search LinkedIn job postings by keywords and location.
GET https://api.chocodata.com/api/v1/linkedin/jobsearch?api_key=YOUR_KEY&keywords=software%20engineer&location=United%20States
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
keywords | string | ✅ yes | - | Job title or keywords |
location | string | - | - | Location to scope the search to |
start | int | - | 0 | Result offset for paging |
{
"query": "software engineer",
"keywords": "software engineer",
"location": "United States",
"start": 0,
"page": 1,
"total_results": 10,
"jobs": [
{
"position": 1,
"id": "4407498584",
"job_id": "4407498584",
"title": "Software Engineer, New Grad (AI)",
"url": "https://www.linkedin.com/jobs/view/software-engineer-new-grad-ai-at-notion-4407498584",
"currency": "USD",
"company": "Notion",
"company_url": "https://www.linkedin.com/company/notionhq",
"location": "San Francisco, CA",
"posted_date": "2026-06-09",
"posted_label": "6 days ago",
"company_logo": "https://media.licdn.com/dms/image/v2/…/notionhq_logo"
}
/* 9 more jobs */
]
}
linkedin.job
The full detail of a single LinkedIn job posting.
GET https://api.chocodata.com/api/v1/linkedin/job?api_key=YOUR_KEY&job_id=4407498584
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
job_id | string | ✅ yes | - | The numeric LinkedIn job ID |
{
"id": "4407498584",
"job_id": "4407498584",
"title": "Software Engineer, New Grad (AI)",
"url": "https://www.linkedin.com/jobs/view/4407498584",
"company": "Notion",
"company_url": "https://www.linkedin.com/company/notionhq",
"location": "San Francisco, CA",
"applicants": "Over 200 applicants",
"posted_label": "6 days ago",
"salary": "$160,000.00 - $250,000.00",
"seniority": "Entry level",
"employment_type": "Full-time",
"job_function": "Engineering and Information Technology",
"industries": "Software Development",
"description": "Who We Are Notion is the collaborative AI workspace where teams and agents think together…",
"company_logo": "https://media.licdn.com/dms/image/v2/…/notionhq_logo"
}
linkedin.company
A LinkedIn company page: industry, size, headquarters, and specialties.
GET https://api.chocodata.com/api/v1/linkedin/company?api_key=YOUR_KEY&company=microsoft
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
company | string | ✅ yes | - | The company’s LinkedIn vanity name or numeric ID |
{
"id": "microsoft",
"name": "Microsoft",
"url": "https://www.linkedin.com/company/microsoft",
"followers": 28379789,
"employee_count": 232340,
"industry": "Software Development",
"company_size": "10,001+ employees",
"headquarters": "Redmond, Washington",
"website": "https://news.microsoft.com/",
"description": "Every company has a mission. What's ours? To empower every person and every organization to achieve more…",
"specialties": "Business Software, Developer Tools, Cloud Computing, AI, Machine Learning…",
"logo": "https://media.licdn.com/dms/image/v2/…/microsoft_logo"
}
Find the exact endpoint for any site
There are three ways to look up the precise path, parameters, and response for a specific site.
1. The scraper directory
The full browsable catalogue of all 385 site pages lives at /scraper-api. Search by brand or category (for example zillow, linkedin, finance), and open any card for that endpoint’s request shape, parameters, and an example. Cards marked JSON return structured data from a dedicated endpoint; cards marked via Universal route through the Universal Web Scraper API.
2. The dashboard playground
The dashboard playground lets you run any endpoint live against your key, see the real response, and copy a ready-made cURL / Node / Python snippet. It is the fastest way to confirm field names and try parameters before you write code.
3. The machine-readable corpus
For coding agents and LLMs, the full docs are available as /docs/llms.txt (manifest) and /docs/llms-full.txt (single-file concatenation). Append .md to any doc URL for raw Markdown.
Anything not in the directory
If a site or page type has no dedicated endpoint yet, you are not blocked: pass its URL to the Universal Web Scraper API and get back HTML, text, or auto-extracted JSON. The Universal endpoint covers the entire web, so the directory is a list of where we have a hand-tuned parser, not a list of what you can scrape.
Related
- Core concepts - the model behind every endpoint.
- Product endpoint - specific-item pattern in depth.
- Search endpoint - list pattern in depth.
- Universal Web Scraper API - scrape any URL.
- Batch endpoint - run many inputs against any endpoint asynchronously.