---
title: Endpoint reference
description: How 470 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.
order: 3
---

# Endpoint reference

Chocodata exposes 470 endpoints across 237 sites and 17 categories. They are not 470 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](/docs/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:

```http
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](/docs/guides/country-and-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 470 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](/docs/endpoints/search) 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 `null` when the site did not publish it, not when extraction failed. You still get a valid object.
- Search-style resources return an array (`products` or `results`) 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](/docs/guides/errors).

We document two resources in depth as the canonical pattern:

- [Product endpoint](/docs/endpoints/product) - the specific-item pattern (one identifier in, one rich object out).
- [Search endpoint](/docs/endpoints/search) - 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](/docs/guides/social-and-app-stores).

### `appstore.search`

Search the Apple App Store by keyword and get ranked app cards.

```http
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 |

```json
{
  "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.

```http
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 |

```json
{
  "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.

```http
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` |

```json
{
  "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.

```http
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` |

```json
{
  "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.

```http
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` |

```json
{
  "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](/docs/guides/social-and-app-stores) for an overview.

### `reddit.subreddit`

A page of posts from a subreddit, in a chosen sort order.

```http
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 |

```json
{
  "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.

```http
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` |

```json
{
  "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.

```http
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 |

```json
{
  "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.

```http
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`) |

```json
{
  "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.video`

Metadata for a single YouTube video: title, description, view and like counts, channel, and related videos.

```http
GET https://api.chocodata.com/api/v1/youtube/video?api_key=YOUR_KEY&video_id=dQw4w9WgXcQ
```

| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| `video_id` | string | ✅ yes |  -  | The 11-character YouTube video ID |

```json
{
  "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": 1783154138,
  "like_count": 19157745,
  "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_handle": "http://www.youtube.com/@RickAstleyYT",
  "channel_url": "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw",
  "thumbnail": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hq720.jpg",
  "related_count": 12
}
```

### `youtube.channel`

A channel's profile and a page of its recent uploads.

```http
GET https://api.chocodata.com/api/v1/youtube/channel?api_key=YOUR_KEY&channel=@MrBeast
```

| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| `channel` | string | ✅ yes |  -  | A channel handle (`@MrBeast`), channel ID (`UC…`), or channel URL |

```json
{
  "channel": "MrBeast",
  "channel_id": "UCX6OQ3DkcsbYNE6H8uQQuVA",
  "channel_name": "MrBeast",
  "handle": "@MrBeast",
  "vanity_url": "http://www.youtube.com/@MrBeast",
  "url": "https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA",
  "avatar": "https://yt3.googleusercontent.com/nxYrc_1_2f77DoBadyxMTmv7ZpRZapHR5jbuYe7…",
  "is_family_safe": true,
  "subscriber_count": 501000000,
  "subscriber_count_text": "501M subscribers",
  "video_count": 987,
  "videos": [
    {
      "position": 1,
      "id": "__fmDj0ZJ1Q",
      "title": "50 YouTube Legends Fight For $1,000,000",
      "url": "https://www.youtube.com/watch?v=__fmDj0ZJ1Q",
      "thumbnail": "https://i.ytimg.com/vi/__fmDj0ZJ1Q/hq720.jpg",
      "channel": "MrBeast",
      "views": "40,376,569 views",
      "published": "2d ago"
    }
    /* more videos */
  ]
}
```

### `youtube.comments`

A page of comments on a YouTube video, with author, like count, and reply count.

```http
GET https://api.chocodata.com/api/v1/youtube/comments?api_key=YOUR_KEY&video_id=dQw4w9WgXcQ
```

| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| `video_id` | string | ✅ yes |  -  | The 11-character YouTube video ID |
| `sort` | enum |  -  | `top` | `top` · `newest` |

```json
{
  "video_id": "dQw4w9WgXcQ",
  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "sort_applied": "top",
  "results_count": 20,
  "comments": [
    {
      "id": "EhpVZ3pnZTM0MGRCZ0I3NWhXQm01NEFhQUJBZyAoKAE%3D",
      "text": "can confirm: he never gave us up",
      "author": "@YouTube",
      "author_channel_id": "UCBR8-60-B28hp2BmDPdntcQ",
      "author_is_verified": true,
      "published": "1 year ago",
      "like_count": "255K",
      "reply_count": "960"
    }
    /* 19 more comments */
  ],
  "continuation": "Eg0SC2RRdzR3OVdnWGNRGAYygAMK…"
}
```

### `youtube.transcript`

The timed transcript of a YouTube video, returned as timestamped segments and as one joined string.

```http
GET https://api.chocodata.com/api/v1/youtube/transcript?api_key=YOUR_KEY&video_id=dQw4w9WgXcQ
```

| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| `video_id` | string | ✅ yes |  -  | The 11-character YouTube video ID |
| `language` | string |  -  | default track | Preferred caption language code (e.g. `en`, `de-DE`); one of the `available_languages` |

```json
{
  "video_id": "dQw4w9WgXcQ",
  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "language": "en",
  "language_name": "English",
  "is_generated": false,
  "segment_count": 61,
  "available_languages": ["en", "de-DE", "ja", "pt-BR", "es-419"],
  "segments": [
    { "text": "[♪♪♪]", "start": 1360, "duration": 1680 },
    { "text": "♪ We're no strangers to love ♪", "start": 18640, "duration": 3240 }
    /* 59 more segments */
  ],
  "text": "[♪♪♪] ♪ We're no strangers to love ♪ ♪ You know the rules and so do I ♪…"
}
```

### `tiktok.video`

Metadata and engagement stats for a single TikTok video.

```http
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) |

```json
{
  "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.

```http
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 |

```json
{
  "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.

```http
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 |

```json
{
  "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.

```http
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 |

```json
{
  "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.

```http
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 |

```json
{
  "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.

```http
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) |

```json
{
  "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.

```http
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 |

```json
{
  "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.

```http
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 |

```json
{
  "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.

```http
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 |

```json
{
  "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.

```http
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 |

```json
{
  "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.

```http
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 |

```json
{
  "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 470 endpoints lives at **[/scraper-api](/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](/docs/endpoints/universal).

### 2. The dashboard playground

The **[dashboard playground](https://app.chocodata.com)** 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`](/docs/llms.txt) (manifest) and [`/docs/llms-full.txt`](/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](/docs/endpoints/universal) 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](/docs/core-concepts) - the model behind every endpoint.
- [Product endpoint](/docs/endpoints/product) - specific-item pattern in depth.
- [Search endpoint](/docs/endpoints/search) - list pattern in depth.
- [Universal Web Scraper API](/docs/endpoints/universal) - scrape any URL.
- [Batch endpoint](/docs/endpoints/batch) - run many inputs against any endpoint asynchronously.
