API X / Twitter

X / Twitter Публикации пользователя API

Возвращает ленту вкладки Posts профиля аккаунта X (Twitter) по handle. Результаты идут в порядке профиля: сначала может быть закреплённая публикация, затем остальные авторские публикации в обратном хронологическом порядке, репосты, цитаты и продолжения веток автора.

0,45 USD/1 тыс. запросов, оплата за запрос, без подписки.

@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
Что вернул 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 ещё
}
Доступность
99,87%
30d · Вызовов: 34 880
Запросы
34 880
30 дн. · по неделям, последние недель: 12
Ответ
2,0s
медиана · 30d

Цены и поставщики

Цена API X / Twitter Публикации пользователя: один API, поставщиков 3, и любой может заменить другого

Первым обслуживает самый дешёвый поставщик. Если он не отвечает, его заменяет следующий в том же вызове.

Вы платите
4,50 USD
0,45 USD/1 тыс. запросов, только за то, чем пользуетесь. Без ежемесячного тарифа.
Ваши первые запросы (222) бесплатны за счёт стартового баланса 0,10 USD.

Попробовать

Получите X / Twitter Публикации пользователя одним запросом

requireFieldsarray
Необязательно; если не указывать, маршрутизация не меняется и обслуживает самый дешёвый источник. Назовите выходные поля, которые этот запрос должен уметь вернуть, например `isPinned` или `isReply`, и его обслужит только источник, который возвращает каждое из них. Поля, которые вы не назвали, по-прежнему возвращаются, когда они есть у обслуживающего источника. Это может поднять вашу цену: если самый дешёвый источник не может вернуть названное поле, обслуживает более дорогой, и вам называют и списывают его цену. Названное поле всё равно может отсутствовать в твите, где его действительно нет. Указание сочетания полей, которые вместе не возвращает ни один источник, отклоняется как неверный ввод, без списания. При постраничном обходе это действует только на первую страницу; следующие страницы остаются у источника, который выбрала эта страница, по названной ей цене.
Открыть в
Пример ответа
Бесплатные запуски возвращают только первые результаты: 3. Пополните ключ, чтобы получить полный ответ.
{
  "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"
  }
}

Полный справочник по параметрам и ответу: каждое поле, тип и пример для этого эндпоинта.

Справочник

Один запрос, один формат ответа.

Каждое поле, которое вы отправляете, и каждое поле, которое получаете, с реальным примером.

Проверено 2026-10-07 · доступность и задержка измерены за 30d

Тело запроса

JSON, отправляется на этот эндпоинт.

  • handlestring

    buildwithjonah

    Handle в Twitter/X без ведущего @.

  • cursorstring

    Непрозрачный курсор постраничной выдачи из nextCursor предыдущего ответа. Не указывайте для первой страницы.

  • requireFieldsarray

    Необязательно; если не указывать, маршрутизация не меняется и обслуживает самый дешёвый источник. Назовите выходные поля, которые этот запрос должен уметь вернуть, например `isPinned` или `isReply`, и его обслужит только источник, который возвращает каждое из них. Поля, которые вы не назвали, по-прежнему возвращаются, когда они есть у обслуживающего источника. Это может поднять вашу цену: если самый дешёвый источник не может вернуть названное поле, обслуживает более дорогой, и вам называют и списывают его цену. Названное поле всё равно может отсутствовать в твите, где его действительно нет. Указание сочетания полей, которые вместе не возвращает ни один источник, отклоняется как неверный ввод, без списания. При постраничном обходе это действует только на первую страницу; следующие страницы остаются у источника, который выбрала эта страница, по названной ей цене.

Вы отправляете. Небольшое тело JSON. Показанные значения это примеры, замените их своими.

Ответ

JSON, по одному примеру значения на поле.

  • foundboolean

    true

each tweetdata.tweets[]
  • idstring

    1842093771280384512

  • urlstring

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

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

  • createdUtcnumber

    1727366400

  • langstring

    en

  • likesnumber

    3820

  • retweetsnumber

    412

  • repliesnumber

    96

  • quotesnumber

    28

  • viewsnumber

    284000

  • bookmarksnumber

    1540

  • isReplybooleanможет потребовать

    false

  • isPinnedbooleanможет потребовать

    true

  • mediaarray
  • conversationIdstring

    1842093771280384512

  • sourcestring

    Twitter Web App

  • authorIdstring

    1401882093771280384

  • authorNamestring

    Jonah Ruiz

  • authorHandlestring

    buildwithjonah

  • authorImagestring

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

datadata
  • nextCursorstring

    DAABCgABGZ3xw5A2xVIKAAIY__posts_page2

Вы получаете. Именованные типизированные поля в одном формате, какой бы источник ни ответил.

Вопросы и ответы

Об API X / Twitter Публикации пользователя

AnyAPI X / Twitter Публикации пользователя API возвращает данные X / Twitter в виде нормализованного JSON одним вызовом POST к /v1/run/twitter.user_posts. Возвращает ленту вкладки Posts профиля аккаунта X (Twitter) по handle. Результаты идут в порядке профиля: сначала может быть закреплённая публикация, затем остальные авторские публикации в обратном хронологическом порядке, репосты, цитаты и продолжения веток автора. AnyAPI направляет каждый запрос по источникам (их 3) и автоматически переключается, если один из них отказывает. Это стоит от 0,45 USD за 1000 запросов, в долларах США, без подписки и без ежемесячного минимума. За последние 30 дней 99,9% вызовов X / Twitter Публикации пользователя через AnyAPI завершились успешно, медианное время ответа 2,0 с, измерено вызовов: 34 880.

Это стоит от 0,45 USD за 1000 запросов, в долларах США, без подписки и без ежемесячного минимума. Вы пополняете один кошелёк в долларах США, и каждый вызов списывает с него. По некоторым неудавшимся запросам, оплаченным из кошелька, возникают расходы на обработку; мы передаём их по себестоимости, без наценки, а сумма списания указана в ответе с ошибкой.

Возвращает ленту вкладки Posts профиля аккаунта X (Twitter) по handle. Результаты идут в порядке профиля: сначала может быть закреплённая публикация, затем остальные авторские публикации в обратном хронологическом порядке, репосты, цитаты и продолжения веток автора. Ответ это нормализованный JSON с тем же конвертом, что возвращает каждый эндпоинт AnyAPI, поэтому разбор второго эндпоинта это смена URL и ничего больше.

За последние 30 дней 99,9% вызовов X / Twitter Публикации пользователя через AnyAPI завершились успешно, медианное время ответа 2,0 с, измерено вызовов: 34 880. Это собственные измерения AnyAPI по трафику через шлюз, пересчитываемые непрерывно, а не опубликованный целевой уровень обслуживания.

Да. Новый аккаунт AnyAPI стартует с бесплатным балансом 0,10 USD, карта не нужна. Этого хватает на 222 вызовов X / Twitter Публикации пользователя по 0,00045 USD за каждый.

AnyAPI в том же запросе обращается к следующему из источников (их 3), начиная с самого дешёвого, поэтому отказ одного источника не ломает ваш вызов.

Отправьте запрос POST на https://api.getanyapi.com/v1/run/twitter.user_posts с вашим ключом AnyAPI в заголовке "Authorization: Bearer" и входными данными в теле JSON. Один и тот же ключ и один и тот же кошелёк работают на каждом эндпоинте AnyAPI.

Нет. Вы пополняете один предоплаченный баланс AnyAPI в долларах США, и каждый запрос списывает с него. Ежемесячного тарифа и минимума нет, а один и тот же баланс оплачивает каждый эндпоинт AnyAPI.

Да. Установите @getanyapi/sdk из npm для TypeScript или getanyapi из pip для Python. Оба вызывают любой эндпоинт AnyAPI с одним и тем же ключом, а ещё подойдёт любой HTTP-клиент.

Да. Агент может подключиться к MCP-серверу AnyAPI по адресу https://api.getanyapi.com/mcp или создать собственный бесплатный пробный ключ одним POST без аутентификации на https://api.getanyapi.com/agent/signup и вызывать этот эндпоинт по HTTP.