API de X / Twitter: Hilo
Resuelve el hilo propio lineal que contiene una publicación de X (Twitter), desde su raíz y a lo largo de las continuaciones enlazadas del autor. Excluye las respuestas de otros usuarios.
US$2.69/1k solic., pagas por solicitud, sin suscripción.
Post
Jonah Ruiz
@buildwithjonah
Spent the last 6 months building a data pipeline that normalizes 40 scraper APIs into one schema. Here is what broke, and what I would do differently. A thread.
4:00 PM · Sep 26, 2024 · 284K Views
Jonah Ruiz@buildwithjonah
First lesson: every provider's error format is different. We ended up writing a translation layer just to know whether a failure meant retry, or never retry.
{"id": "1842093771280384512","url": "https://x.com/buildwithjonah/status/1842093771280384512","text": "Spent the last 6 months building a data pipeline that normalizes 40 scraper APIs into one schema. Here is what broke, and what I would do differently. A thread.","conversationId": "1842093771280384512","inReplyToId": null,"authorId": "1401882093771280384","authorHandle": "buildwithjonah","authorName": "Jonah Ruiz",... 11 campos más}
Precios
Precios del endpoint Hilo de la API de X / Twitter
Pruébalo
Obtén Hilo de X / Twitter en una sola solicitud
Este ejemplo muestra 43 de 45 campos. Ver todos los campos
{
"found": true,
"data": {
"conversationId": "1842093771280384512",
"threadLength": 3,
"complete": true,
"author": {
"id": "1401882093771280384",
"handle": "buildwithjonah",
"name": "Jonah Ruiz",
"url": "https://x.com/buildwithjonah",
"verified": true,
"blueVerified": true,
"avatarUrl": "https://pbs.twimg.com/profile_images/1401882093771280384/jonah_400x400.jpg",
"coverUrl": "https://pbs.twimg.com/profile_banners/1401882093771280384/1700000000",
"bio": "Building data infra. Previously eng @Segment. Writing about pipelines and APIs.",
"location": "Denver, CO",
"followers": 41200,
"following": 512,
"createdUtc": 1517443200
},
"tweets": [
{
"id": "1842093771280384512",
"url": "https://x.com/buildwithjonah/status/1842093771280384512",
"text": "Spent the last 6 months building a data pipeline that normalizes 40 scraper APIs into one schema. Here is what broke, and what I would do differently. A thread.",
"conversationId": "1842093771280384512",
"inReplyToId": null,
"authorId": "1401882093771280384",
"authorHandle": "buildwithjonah",
"authorName": "Jonah Ruiz",
"media": [],
"createdUtc": 1727366400,
"likeCount": 3820,
"replyCount": 96,
"repostCount": 412,
"quoteCount": 28,
"viewCount": 284000,
"bookmarkCount": 1540,
"lang": "en",
"isReply": false,
"source": "Twitter Web App"
},
{
"id": "1842093771280450048",
"url": "https://x.com/buildwithjonah/status/1842093771280450048",
"text": "First lesson: every provider's error format is different. We ended up writing a translation layer just to know whether a failure meant retry, or never retry.",
"conversationId": "1842093771280384512",
"inReplyToId": "1842093771280384512",
"authorId": "1401882093771280384",
"authorHandle": "buildwithjonah",
"authorName": "Jonah Ruiz",
"media": [
{
"type": "photo",
"url": "https://pbs.twimg.com/media/F9k2QoQWkAA_error_flow.jpg",
"width": 1600,
"height": 900
}
],
"createdUtc": 1727366460,
"likeCount": 1240,
"replyCount": 31,
"repostCount": 88,
"quoteCount": 5,
"viewCount": 91000,
"bookmarkCount": 512,
"lang": "en",
"isReply": true,
"source": "Twitter Web App"
},
{
"id": "1842093771280516096",
"url": "https://x.com/buildwithjonah/status/1842093771280516096",
"text": "Second lesson: pagination cursors are never portable across providers. We had to build our own cursor abstraction to keep client code simple.",
"conversationId": "1842093771280384512",
"inReplyToId": "1842093771280450048",
"authorId": "1401882093771280384",
"authorHandle": "buildwithjonah",
"authorName": "Jonah Ruiz",
"media": [],
"createdUtc": 1727366520,
"likeCount": 980,
"replyCount": 22,
"repostCount": 64,
"quoteCount": 3,
"viewCount": 68000,
"bookmarkCount": 401,
"lang": "en",
"isReply": true,
"source": "Twitter Web App"
}
]
}
}Referencia completa de parámetros y respuesta: cada campo, tipo y ejemplo de este endpoint.
Referencia
Una solicitud, un formato de respuesta.
Cada campo que envías y cada campo que recibes, cada uno con un ejemplo real.
Verificado por última vez el 2026-11-14 · disponibilidad y latencia medidas en 30d
Cuerpo de la solicitud
JSON, enviado por POST a este endpoint.
- urlstring
https://x.com/buildwithjonah/status/1842093771280384512
URL de estado canónica de x.com o twitter.com con un ID numérico de tweet. Puedes indicar cualquier tweet del hilo propio; el proveedor resuelve la raíz del hilo.
Respuesta
JSON, un valor de ejemplo por campo.
- avatarUrlstring
https://pbs.twimg.com/profile_images/1401882093771280384/jonah_400x400.jpg
Avatar image URL of the author.
- biostring
Building data infra. Previously eng @Segment. Writing about pipelines and APIs.
Bio text on the author's profile.
- blueVerifiedboolean
true
Whether the author carries an X blue verification badge.
- coverUrlstring
https://pbs.twimg.com/profile_banners/1401882093771280384/1700000000
Profile banner image URL of the author.
- createdUtcnumber
1517443200
UTC epoch timestamp in seconds (Unix time) the author's account was created. Multiply by 1000 for a JS Date in milliseconds.
- followersinteger
41200
Follower count of the author.
- followinginteger
512
Number of accounts the author follows.
- handlestring
buildwithjonah
Populated whenever the provider has data for the entity.
- idstring
1401882093771280384
Populated whenever the provider has data for the entity.
- locationstring
Denver, CO
Location text on the author's profile.
- namestring
Jonah Ruiz
Populated whenever the provider has data for the entity.
- urlstring
https://x.com/buildwithjonah
Canonical X profile URL of the thread's author.
- verifiedboolean
true
Whether the author carries a legacy X verification badge.
- completeboolean
true
Whether the provider reached the end of the self-thread without hitting its internal cap.
- conversationIdstring
1842093771280384512
Conversation ID shared by the self-thread tweets. Populated whenever the provider has data for the entity.
- threadLengthinteger
3
Number of tweets returned in the self-thread.
Ordered self-thread tweets. Replies from other users are excluded. Populated whenever the provider has data for the entity.
- authorHandlestring
buildwithjonah
Populated whenever the provider has data for the entity.
- authorIdstring
1401882093771280384
Populated whenever the provider has data for the entity.
- authorNamestring
Jonah Ruiz
Populated whenever the provider has data for the entity.
- bookmarkCountinteger
1540
Bookmark count of the post.
- conversationIdstring
1842093771280384512
- createdUtcnumber
1727366400
UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.
- idstring
1842093771280384512
Populated whenever the provider has data for the entity.
- inReplyToIdstring
null
- isReplyboolean
false
Whether the post is a reply to another post.
- langstring
en
Two-letter language code X detected for the post.
- likeCountinteger
3820
Like count of the post.
- quoteCountinteger
28
Quote count of the post.
- replyCountinteger
96
Reply count of the post.
- repostCountinteger
412
Repost count of the post.
- sourcestring
Twitter Web App
Client the post was sent from, e.g. "Twitter Web App".
- textstring
Spent the last 6 months building a data pipeline that normalizes 40 scraper APIs into one schema. Here is what broke, and what I would do differently. A thread.
Populated whenever the provider has data for the entity.
- urlstring
https://x.com/buildwithjonah/status/1842093771280384512
Populated whenever the provider has data for the entity.
- viewCountinteger
284000
View count of the post.
Photo, video, and GIF attachments on the post. Empty when the post has none.
- heightinteger
Pixel height of the media item, when the lane reports it.
- typestring
One of photo, video, or gif.
- urlstring
Image URL. For a video or GIF this is the poster/thumbnail frame. X media URLs on pbs.twimg.com are publicly fetchable without authentication; append ?name=orig for the full-resolution original.
- videoUrlstring
Playable video file URL. Present only for video and gif items.
- widthinteger
Pixel width of the media item, when the lane reports it.
- foundboolean
true
Whether the provider returned a tweet thread result.
- reason"not_found"
Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.
¿Vendes esta API? Consulta el esquema completo que debe devolver tu endpoint.
Preguntas frecuentes
Acerca del endpoint Hilo de la API de X / Twitter
El endpoint Hilo de AnyAPI para X / Twitter devuelve datos de X / Twitter como JSON normalizado con una sola llamada POST a /v1/run/twitter.thread. Resuelve el hilo propio lineal que contiene una publicación de X (Twitter), desde su raíz y a lo largo de las continuaciones enlazadas del autor. Excluye las respuestas de otros usuarios. AnyAPI devuelve un único esquema normalizado sin importar qué fuente atienda la solicitud. Cuesta desde US$2.69 por cada 1,000 solicitudes, en dólares estadounidenses, sin suscripción y sin mínimo mensual. En los últimos 30 días, el 99.5% de las llamadas al endpoint Hilo de la API de X / Twitter a través de AnyAPI tuvo éxito, con un tiempo de respuesta mediano de 2.7 segundos en 7304 llamadas medidas.