TikTok API endpoint
Calls the app's primary feed route - `POST /aweme/v2/feed/`, which the Android client sends with a protobuf request body and answers with protobuf - and returns a schema-free decode: field numbers become keys, length-delimited fields become strings when printable, nested messages when they parse and base64 otherwise, plus a flat list of every string leaf. Field numbering is inferred because TikTok publishes no schema for this message; use the JSON `GET /tiktok/mobile/feed` route when you need the stable structured contract.
/tiktok/mobile/feed/postMeasured 2026-10-20 on the aggr16-normal.tiktokv.us edge with the api16-normal-useast5.tiktokv.us origin:
HTTP 200, 17 top-level fields and ~900-1,200 decoded strings per call, ~3 s latency.
No query parameters.
Example response (truncated):
{
"code": 200,
"msg": "OK",
"data": {
"host": "aggr16-normal.tiktokv.us",
"items": {
"f1": {"f1": "7698028529128066334", "f3": "Gays and lesbians with the amazing @Ronny Chieng"},
"f2": 0,
"f9": "tos-useast5-avt-0068-tx/91df47ac89f4b92e49b472bab7d9"
},
"strings": ["7698028529128066334", "Matteo Lane", "Comedian. See me on tour! ..."],
"fetched_at": "2026-10-20T08:20:00Z",
"note": "field numbers are inferred; this route answers protobuf with no published schema"
}
}
Notes:
items is a best-effort structural decode, and strings is lossless for
every string field.| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/tiktok/mobile/feed/post" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"host": "aggr16-normal.tiktokv.us",
"items": {
"f1": {
"f1": "7698028529128066334",
"f3": "Gays and lesbians with the amazing @Ronny Chieng"
},
"f2": 0,
"f9": "tos-useast5-avt-0068-tx/91df47ac89f4b92e49b472bab7d9"
},
"strings": [
"7698028529128066334",
"Matteo Lane",
"Comedian. See me on tour! ..."
],
"fetched_at": "2026-10-20T08:20:00Z",
"note": "field numbers are inferred; this route answers protobuf with no published schema"
}
}Request schema
No body schema
Response schema
#/definitions/tiktokmobile.feedPostResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| fetched_at | string | No | 2026-10-20T08:20:00Z | |||
| host | string | No | aggr16-normal.tiktokv.us | |||
| items | object | No | ||||
| note | string | No | ||||
| strings | array | No |
| Status | Description | Schema |
|---|---|---|
| 429 | Rate limit exceeded | #/definitions/app.Response |
| 500 | Internal server error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/tiktok/mobile/feed/post" \
-H "x-api-key: $CRAWLORA_API_KEY"