API de X / Twitter

API de X / Twitter: Publicaciones del usuario

Obtén la línea de tiempo de la pestaña Posts del perfil de una cuenta de X (Twitter) por nombre de usuario. Los resultados siguen el orden del perfil: puede aparecer primero una publicación fijada, seguida de publicaciones propias, reposts, citas y continuaciones del hilo propio, en orden cronológico inverso.

US$0.45/1k solic., pagas por solicitud, sin suscripción.

@buildwithjonah / X
x.com/buildwithjonah

@buildwithjonah

BFollow

@buildwithjonah

PostsRepliesHighlightsMedia

Pinned

B

@buildwithjonah· Sep 26, 2024

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.

964123,820
Lo que devolvió la APItweets[0]
{
"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.",
"createdUtc": 1727366400,
"lang": "en",
"likes": 3820,
"retweets": 412,
"replies": 96,
... 12 campos más
}
Disponibilidad
99.99%
30d · 338,831 llamadas
Solicitudes
339,051
30d · semanal, últimas 12 sem.
Respuesta
1.6s
mediana · 30d

Precios y proveedores

Precios del endpoint Publicaciones del usuario de la API de X / Twitter: una API, 3 proveedores intercambiables

El proveedor más barato responde primero. Si falla, el siguiente toma el relevo en la misma llamada.

Pagas
US$4.50
US$0.45/1k solic., solo por lo que usas. Sin plan mensual.
Tus primeras 222 solicitudes son gratis con el saldo inicial de US$0.10.

Pruébalo

Obtén Publicaciones del usuario de X / Twitter en una sola solicitud

requireFieldsarray
Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `isPinned`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a tweet that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. On a paginated walk it applies to the first page only; later pages stay with the source that page chose, at the price it was quoted.
Abrir en
Respuesta de ejemplo
Las ejecuciones gratis devuelven solo los primeros 3 resultados. Agrega fondos a una clave para obtener la respuesta completa.

Este ejemplo muestra 28 de 30 campos. Ver todos los campos

{
  "found": true,
  "data": {
    "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.",
        "createdUtc": 1727366400,
        "lang": "en",
        "likes": 3820,
        "retweets": 412,
        "replies": 96,
        "quotes": 28,
        "views": 284000,
        "bookmarks": 1540,
        "isReply": false,
        "isPinned": true,
        "media": [],
        "conversationId": "1842093771280384512",
        "source": "Twitter Web App",
        "authorId": "1401882093771280384",
        "authorName": "Jonah Ruiz",
        "authorHandle": "buildwithjonah",
        "authorImage": "https://pbs.twimg.com/profile_images/1401882093771280384/jonah_400x400.jpg"
      },
      {
        "id": "1841002881044099072",
        "url": "https://x.com/buildwithjonah/status/1841002881044099072",
        "text": "Shipped a small tool today that diffs API response schemas across versions. Saved me from a nasty silent break last week.",
        "createdUtc": 1727280000,
        "lang": "en",
        "likes": 640,
        "retweets": 52,
        "replies": 18,
        "quotes": 2,
        "views": 41200,
        "bookmarks": 210,
        "isReply": false,
        "isPinned": false,
        "media": [
          {
            "type": "photo",
            "url": "https://pbs.twimg.com/media/F9j1QoQWkAA_diff_tool.jpg",
            "width": 1600,
            "height": 1000
          }
        ],
        "conversationId": "1841002881044099072",
        "source": "Twitter for iPhone",
        "authorId": "1401882093771280384",
        "authorName": "Jonah Ruiz",
        "authorHandle": "buildwithjonah",
        "authorImage": "https://pbs.twimg.com/profile_images/1401882093771280384/jonah_400x400.jpg"
      },
      {
        "id": "1839881220337844224",
        "url": "https://x.com/buildwithjonah/status/1839881220337844224",
        "text": "@dataeng_marta Totally agree, cursor pagination beats offset once you get past a few hundred thousand rows.",
        "createdUtc": 1727107200,
        "lang": "en",
        "likes": 88,
        "retweets": 4,
        "replies": 6,
        "quotes": 0,
        "views": 6200,
        "bookmarks": 12,
        "isReply": true,
        "isPinned": false,
        "media": [],
        "conversationId": "1839880002114899968",
        "source": "Twitter Web App",
        "authorId": "1401882093771280384",
        "authorName": "Jonah Ruiz",
        "authorHandle": "buildwithjonah",
        "authorImage": "https://pbs.twimg.com/profile_images/1401882093771280384/jonah_400x400.jpg"
      }
    ],
    "nextCursor": "DAABCgABGZ3xw5A2xVIKAAIY__posts_page2"
  }
}

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.

  • handlestring

    buildwithjonah

    Nombre de usuario de Twitter/X sin la @ inicial.

  • cursorstring

    Cursor de paginación opaco del nextCursor de una respuesta anterior. Omítelo para la primera página.

  • requireFieldsarray

    Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `isPinned`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a tweet that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. On a paginated walk it applies to the first page only; later pages stay with the source that page chose, at the price it was quoted.

Envías. Un cuerpo JSON pequeño. Los valores que se muestran son ejemplos para reemplazar por los tuyos.

Respuesta

JSON, un valor de ejemplo por campo.

datadata

The Posts-tab timeline page, or null when the account was not found.

  • nextCursorstring

    DAABCgABGZ3xw5A2xVIKAAIY__posts_page2

    Opaque cursor for the next native Posts-tab page, or null when no more pages are available.

each tweetdata.tweets[]

Posts in profile order. A pinned post may appear before otherwise reverse-chronological results. Populated whenever the provider has data for the entity.

  • authorHandlestring

    buildwithjonah

    Handle of the account that posted.

  • authorIdstring

    1401882093771280384

    Numeric X user id of the account that posted, as a string.

  • authorImagestring

    https://pbs.twimg.com/profile_images/1401882093771280384/jonah_400x400.jpg

    Avatar image URL of the account that posted.

  • authorNamestring

    Jonah Ruiz

    Display name of the account that posted.

  • bookmarksinteger

    1540

    Number of bookmarks.

  • conversationIdstring

    1842093771280384512

    Id of the conversation the post belongs to, as a string.

  • createdUtcnumber

    1727366400

    UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.

  • idstring

    1842093771280384512

    The post's numeric tweet ID, represented as a string. Populated whenever the provider has data for the entity.

  • isPinnedbooleanse puede exigir

    true

    Whether X marks the post as pinned on the profile, or null when the serving source does not publish it.

  • isReplyboolean

    false

    Whether X marks the record as a reply. Certified Posts-tab captures use this for self-thread continuations.

  • langstring

    en

    Language code reported for the post, when available.

  • likesinteger

    3820

    Number of likes.

  • quotesinteger

    28

    Number of quote posts.

  • repliesinteger

    96

    Number of replies.

  • retweetsinteger

    412

    Number of reposts or retweets.

  • 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.

    The post text. Empty for media-only posts. Populated whenever the provider has data for the entity.

  • urlstring

    https://x.com/buildwithjonah/status/1842093771280384512

    Canonical x.com URL of the post. Populated whenever the provider has data for the entity.

  • viewsinteger

    284000

    Number of views.

each mediadata.tweets[].media[]

Photo, video, and GIF attachments on the post. Empty when the post has none.

  • heightinteger
  • 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
top level
  • foundboolean

    true

    Whether the account's Posts-tab timeline was returned.

  • reason"not_found" | "suspended"

    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. `suspended`: the platform has suspended the account. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.

Recibes. Campos con nombre y tipo, con el mismo formato sin importar qué fuente responda.

¿Vendes esta API? Consulta el esquema completo que debe devolver tu endpoint.

Preguntas frecuentes

Acerca del endpoint Publicaciones del usuario de la API de X / Twitter

El endpoint Publicaciones del usuario de AnyAPI para X / Twitter devuelve datos de X / Twitter como JSON normalizado con una sola llamada POST a /v1/run/twitter.user_posts. Obtén la línea de tiempo de la pestaña Posts del perfil de una cuenta de X (Twitter) por nombre de usuario. Los resultados siguen el orden del perfil: puede aparecer primero una publicación fijada, seguida de publicaciones propias, reposts, citas y continuaciones del hilo propio, en orden cronológico inverso. AnyAPI enruta cada solicitud entre 3 fuentes y recurre automáticamente a otra cuando una falla. Cuesta desde US$0.45 por cada 1,000 solicitudes, en dólares estadounidenses, sin suscripción y sin mínimo mensual. En los últimos 30 días, el 100.0% de las llamadas al endpoint Publicaciones del usuario de la API de X / Twitter a través de AnyAPI tuvo éxito, con un tiempo de respuesta mediano de 1.6 segundos en 338.831 llamadas medidas.

Cuesta desde US$0.45 por cada 1,000 solicitudes, en dólares estadounidenses, sin suscripción y sin mínimo mensual. Agregas fondos a una billetera en dólares y cada llamada descuenta de ella. Algunas solicitudes fallidas pagadas con la billetera generan cargos de procesamiento que trasladamos al costo, sin margen; la respuesta de error muestra el monto cobrado.

Obtén la línea de tiempo de la pestaña Posts del perfil de una cuenta de X (Twitter) por nombre de usuario. Los resultados siguen el orden del perfil: puede aparecer primero una publicación fijada, seguida de publicaciones propias, reposts, citas y continuaciones del hilo propio, en orden cronológico inverso. La respuesta es JSON normalizado con el mismo envoltorio que devuelve cada endpoint de AnyAPI, así que procesar un segundo endpoint es solo cambiar la URL.

En los últimos 30 días, el 100.0% de las llamadas al endpoint Publicaciones del usuario de la API de X / Twitter a través de AnyAPI tuvo éxito, con un tiempo de respuesta mediano de 1.6 segundos en 338.831 llamadas medidas. Estas son mediciones propias de AnyAPI sobre el tráfico que pasa por el gateway, recalculadas continuamente, no un objetivo de nivel de servicio publicado.

Sí. Una cuenta nueva de AnyAPI empieza con US$0.10 de saldo gratis, sin tarjeta, que alcanza para 222 llamadas a Publicaciones del usuario de X / Twitter a US$0.00045 cada una.

AnyAPI consulta la siguiente de sus 3 fuentes en la misma solicitud, empezando por la más barata, así que la caída de una fuente no hace fallar tu llamada.

Envía una solicitud POST a https://api.getanyapi.com/v1/run/twitter.user_posts con tu clave de AnyAPI en un encabezado "Authorization: Bearer" y la entrada como cuerpo JSON. La misma clave y la misma billetera sirven para todos los endpoints de AnyAPI.

No. Agregas dólares a un solo saldo prepagado de AnyAPI y cada solicitud descuenta de él. No hay plan mensual ni mínimo, y el mismo saldo paga todos los endpoints de AnyAPI.

Sí. Instala @getanyapi/sdk desde npm para TypeScript o getanyapi desde pip para Python. Ambos llaman a todos los endpoints de AnyAPI con la misma clave, y también sirve cualquier cliente HTTP.

Sí. Un agente puede conectarse al servidor MCP de AnyAPI en https://api.getanyapi.com/mcp, o crear su propia clave de prueba gratis con un solo POST sin autenticar a https://api.getanyapi.com/agent/signup y llamar a este endpoint por HTTP.