本文へスキップ

X Articles API:記事の全文を取得する方法

X Article の本文は、それを共有するポストには入っていません。ポストにあるのは t.co リンクだけなので、API は Article そのものを取得する必要があり、公式 X API ではポストの読み取りとして1,000件あたり$5.00が課金されます。

結論: X Articles は、2024年3月から有料プランの利用者が X で公開している長文ポストです。公式 X API では、tweet.fields=article を付けたポスト取得で1件$0.005で読み取れ、2026年11月22日からは著者1人につき$0.010が加わります。全文・閲覧数・著者を1リクエストで取得するなら、Sorsa API の POST /article を使います。1,000件あたり$1.40からで、100回分の無料リクエストが付きます。

エンドポイント
POST /article
1ページの件数
1リクエストあたり1 Article
料金
1,000件あたり$1.40から

#X Article とは何か、なぜそのポストにはリンクしかないのか

X Article は、タイトル、カバー画像、整形された本文(見出し、太字、斜体、リスト、画像、動画、GIF、リンク、埋め込みポスト)を持つ X の長文ポストです。X は2024年3月7日(新しいタブで開きます)に、Premium+ の利用者と認証済み組織向けに Articles を開始しました。

コードを書かずに1件の Article を読んだり保存したりするには、そのリンクを無料の X to Markdown コンバーターに貼り付けてください。タイトル、著者、日付、本文を、コピーやダウンロードできる Markdown で返します。このガイドの残りでは、1件ずつでも何千件でも、コードで Articles を読み取る方法を説明します。

Article を書くには、今も有料プランが必要です。X ヘルプセンター(新しいタブで開きます)には、Premium と Premium+、The X Subscription の Plus・Premium・Super・Ultra の各プラン、Premium Business と Organizations が挙げられています。読むだけなら誰でも可能で、公開された Article は x.com の著者の Articles タブで読めます。ただし、著者が購読者限定にしている場合は除きます。

Article にはリンクが2種類あり、その違いがコードの成否を分けます。

  • ポスト。 公開すると、x.com/<handle>/status/<post ID> に通常のポストが作られます。タイムラインに表示され、リプライやいいねが付きますが、本文は t.co リンクだけです。
  • Article。 本文は x.com/i/article/<Article ID> にあり、ポストとは別の番号です。API はポストを経由して Article を取得するので、ポストのリンクを控えておいてください。
The post link and the Article link of one X Article 共有した投稿 x.com/harbor_essays_weekly/status/ 2112908047021486497 Harbor Essays https://t.co/Hb7qLm2xQe 本文はリンクのみ。 投稿ID: こちらを送る 開く X Article x.com/i/article/ 2112901726205358168 カバー タイトル 見出し、リスト、画像、投稿。 ArticleID: 別の番号 POST /article 投稿リンクまたは投稿IDを受け取り Articleを返す: 本文、カバー、日付、表示数、いいね、投稿者。
ポストと Article は別の ID を持ちます。渡すのはポストのリンクか ID で、ポストの本文だけでは t.co リンクにすぎません。

#公式 X API で X Articles は読み取れますか?

はい。公式 X API は、ポスト取得で article フィールドを指定すれば、Article のテキストとエンティティを返します。たとえば GET /2/tweets?ids=<post IDs>&tweet.fields=article です。このフィールドがないと、ポストの text には t.co リンクしか入りません。

X のスタッフは、開発者フォーラムで2026年9月8日に(新しいタブで開きます)この方法を確認しています。Articles には article、280文字を超える長文ポストには note_tweet を使い、単一 ID の取得でも複数 ID の取得でも同じです。X 自身のリファレンス(新しいタブで開きます)は article オブジェクトの型を示していますが、サブフィールドの名前は挙げていません。パーサーを書く前に、実際のレスポンスを確認してください。

Article は1件がポストの読み取りとして課金され、$0.005、つまりX の従量課金の料金表(新しいタブで開きます)で1,000記事あたり$5.00です。2026年11月22日からは、展開(expansions)で返されるオブジェクトも課金対象になります(10月23日の X の通知(新しいタブで開きます))。著者のプロフィールで$0.010、カバー画像で$0.005が加わるため、著者付きの Article は1,000件あたり$15.00です。どの読み取りにも、開発者アカウント、前払いのクレジット、ベアラートークンが必要で、従量課金は月300万ポストの読み取りで上限になります。

書き込みは別の2つのエンドポイントで行います。POST /2/articles/draft(新しいタブで開きます) はタイトルと DraftJS の本文から下書きを作り、POST /2/articles/{article_id}/publish で公開します。どちらも著者の OAuth ユーザートークンが必要です。

#Sorsa API で X Article の全文を取得する

コードで X Articles を読み取るには、Twitter(X)API 兼スクレイピングツールである Sorsa API を使います。POST /article はポストのリンクか ID を受け取り、全文、プレビュー、カバー画像、公開日時、いいね数、リポスト数、リプライ数、引用数、ブックマーク数、閲覧数、著者の完全なプロフィールを1リクエストで返します。Article は1件が1リクエストで、1,000件あたり$1.40からです。全プランで毎秒20リクエスト、API キーは1つだけで、開発者アカウントは不要です。

  1. キーを取得する。 サインアップして、ダッシュボードから API キーをコピーします。100回分の無料リクエストで、長さに関係なく100件の Articles を読み取れます。

  2. ポストのリンクをコピーする。 Article を共有しているポストの x.com/<handle>/status/<ID> か、ID だけを使います。どちらのリンクか迷ったら、ここに貼り付けてください。

    ポストのリンク: これをPOST /articleに送ってください。

    ポストID
    2112908047021486497
    投稿日時(IDから読み取り)
    2026年10月21日 14:05:09 UTC
    POST /articleのリクエストボディ
    {"tweet_link": "https://x.com/harbor_essays_weekly/status/2112908047021486497"}

    ポストのリンクは、そのままPOST /articleに送れます。x.com/i/article/ のリンクにはArticle自体のIDが入っており、エンドポイントでは受け付けません。

  3. リクエストを送る。 ポストのリンクか ID を tweet_link として、API キーを ApiKey ヘッダーに付けて POST /article(新しいタブで開きます) に POST します。

    ターミナル
    curl -X POST "https://api.sorsa.io/v3/article" \
      -H "ApiKey: YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"tweet_link": "2112908047021486497"}'
    
  4. レスポンスを読む。 本文は full_text にあり、カウンターがその隣に並びます。author はユーザー系エンドポイントが返すものと同じ完全なプロフィールです。

    レスポンス200 OK
    {
      "full_text": "Seven years ago we met in a laundromat...",
      "preview_text": "Seven years ago we met in a laundromat",
      "cover_image_url": "https://pbs.twimg.com/media/HbX2k9WaYAAq3Lm.jpg",
      "published_at": "2026-10-21T14:05:09Z",
      "views_count": 88214,
      "likes_count": 3207,
      "retweet_count": 410,
      "reply_count": 96,
      "quote_count": 58,
      "bookmark_count": 1120,
      "author": {
        "id": "1116267827557806085",
        "username": "harbor_essays_weekly",
        "display_name": "Harbor Essays",
        "description": "Long reads about small clubs and libraries.",
        "followers_count": 48210,
        "followings_count": 312,
        "tweets_count": 2875,
        "created_at": "2019-04-11T09:12:44Z",
        "verified": true,
        "protected": false
      }
    }
    

同じ呼び出しを Python と Node.js で示します。多数のリンクをループ処理する用途にそのまま使えます。

import requests

API = "https://api.sorsa.io/v3"
HEADERS = {"ApiKey": "YOUR_API_KEY"}


def get_article(link):
    r = requests.post(f"{API}/article", headers=HEADERS,
                      json={"tweet_link": link}, timeout=30)
    if r.status_code == 404:
        return None  # the post doesn't share an Article
    r.raise_for_status()
    return r.json()


art = get_article(
    "https://x.com/harbor_essays_weekly/status/2112908047021486497")
words = len(art["full_text"].split())
print(art["author"]["username"], art["published_at"])
print(f"{words:,} words, {art['views_count']:,} views")

404 は、たいていそのポストが Article を共有していないことを意味します。その場合は POST /tweet-info で読み取ってください。403 はキーがない、間違っている、またはリクエストが残っていないことを、429 は1秒間に20リクエストを超えたことを意味するので、1秒待って再試行します。失敗したリクエストに課金されることはありません。

#/article レスポンスの内容

POST /article のレスポンスには11個のフィールドがあります。本文が2つ(全文と冒頭部分)、カバー、公開日時、6つのカウンター、著者です。以下はすべて、最新の API リファレンスに基づいています。

Where each field of the POST /article response sits on an X Article カバー画像 1 Harbor Essays @harbor_essays_weekly, Oct 21, 2026 2 7年前、私たちはコインランドリーで出会った 3 返信96件 リポスト410件 いいね3.2K 表示8.8万 4 1 cover_image_url カバー画像へのリンク 2 author, published_at プロフィール全体と公開時刻 3 full_text, preview_text 本文全体と冒頭部分 4 reply_count, retweet_count, likes_count, quote_count, bookmark_count, views_count すべてのカウンター、リアルタイム 1リクエストですべて返る。Sorsa APIのArticleは 1,000件あたり$1.40から。
データを持つ Article のすべての部分が、著者のプロフィールも含めて同じレスポンスで返ります。
フィールド内容
full_text長さを問わない、プレーンテキストの本文全体
preview_text「続きを読む」の前に X が表示する冒頭の数行
cover_image_urlカバー画像へのリンク(著者が未設定なら null)
published_atArticle の公開日時(ISO 8601 形式)
views_count閲覧数(インプレッション)
likes_count, retweet_count, reply_count, quote_count, bookmark_countいいね、リポスト、リプライ、引用、ブックマークの数
author著者の完全なプロフィール(ID、ハンドル、名前、自己紹介、フォロワー数、フォロー数、ポスト数、登録日、認証状況)
  • full_text

    内容
    長さを問わない、プレーンテキストの本文全体
  • preview_text

    内容
    「続きを読む」の前に X が表示する冒頭の数行
  • cover_image_url

    内容
    カバー画像へのリンク(著者が未設定なら null)
  • published_at

    内容
    Article の公開日時(ISO 8601 形式)
  • views_count

    内容
    閲覧数(インプレッション)
  • likes_count, retweet_count, reply_count, quote_count, bookmark_count

    内容
    いいね、リポスト、リプライ、引用、ブックマークの数
  • author

    内容
    著者の完全なプロフィール(ID、ハンドル、名前、自己紹介、フォロワー数、フォロー数、ポスト数、登録日、認証状況)

カウンターはリクエスト時点の値なので、1週間後にもう一度呼び出せば、Article がその後どれだけ広まったかがわかります。Article へのリプライを読むには、X のリプライを見る方法を参照してください。リプライは、ほかのポストと同じく共有元のポストに付いています。

知っておきたいこと

閲覧数は、Article では views_count、ツイートでは view_count として返ります。Articles とツイートを1つのテーブルに入れる場合は、読み込み時にこのキー名を揃えてください。そうしないと、どちらかの列が空のままになります。

#アカウントが公開したすべての Article を探す

アカウントの Articles を一覧するには、X の url: コマンドでそのアカウントのポストから x.com/i/article へのリンクを検索し、一致した各ポストを POST /article で読み取ります。検索には POST /search-tweets(新しいタブで開きます) を使います。1リクエストで約20ポストを返し、next_cursor が空で返るまで次のページを指します。

Python
import requests

API = "https://api.sorsa.io/v3"
HEADERS = {"ApiKey": "YOUR_API_KEY"}


def article_posts(handle):
    query = f"from:{handle} url:x.com/i/article"
    body = {"query": query, "order": "latest"}
    while True:
        r = requests.post(f"{API}/search-tweets", headers=HEADERS,
                          json=body, timeout=30)
        r.raise_for_status()
        page = r.json()
        for tweet in page.get("tweets", []):
            yield tweet["id"]
        if not page.get("next_cursor"):
            break
        body["next_cursor"] = page["next_cursor"]


for post_id in article_posts("harbor_essays_weekly"):
    r = requests.post(f"{API}/article", headers=HEADERS,
                      json={"tweet_link": post_id}, timeout=30)
    if r.ok:
        print(post_id, r.json()["views_count"])

クエリに since:2026-01-01 や min_faves:100 を加えると、最近の Articles や人気の Articles だけに絞れます。コマンドの全一覧は、Twitter 検索コマンドのガイドにあります。from: をキーワードに替えれば、同じクエリでそのトピックについて誰が書いた Articles も見つかります。一致したポストが、他人の Article を共有しただけのアカウントのものである場合もあります。その場合は、各 POST /article レスポンスの author.username をハンドルと比べて、本人の Articles だけに絞ってください。

#X Article を Markdown として保存する

Article が1件だけなら、このガイドの冒頭で紹介したコンバーターが最も手早い方法です。まとめて処理するなら、各 POST /article レスポンスを、重要な情報をヘッダーに入れた Markdown ファイルとして1件ずつ書き出します。

Python
from pathlib import Path


def save_markdown(art, post_link, folder="articles"):
    a = art["author"]
    head = [
        f"# @{a['username']}, {art['published_at'][:10]}",
        "",
        f"Source: {post_link}",
        f"Author: {a['display_name']} ({a['followers_count']:,} followers)",
        f"Views: {art['views_count']:,}  Likes: {art['likes_count']:,}",
        "",
    ]
    if art.get("cover_image_url"):
        head += [f"![cover]({art['cover_image_url']})", ""]
    path = Path(folder) / f"{post_link.rstrip('/').split('/')[-1]}.md"
    path.parent.mkdir(exist_ok=True)
    path.write_text("\n".join(head) + art["full_text"] + "\n",
                    encoding="utf-8")
    return path

Markdown はどのエディターでも開け、きれいに印刷でき、そのまま ChatGPT や Claude、検索インデックスに渡せます。要約、リサーチノート、言語モデル用のデータセットに使えます。画像は X のサーバーへのリンクのままなので、永続的なコピーが必要なら、カバー画像を自分でダウンロードしてください。

各ファイルの名前はポスト ID なので、ジョブを再実行しても、コピーが増えずにファイルが更新されます。ヘッダーには出典リンク、著者、カウンターがテキストと一緒に残るため、Article を引用したり、後で2件を比較したりするときに役立ちます。1件の Article を印刷するには、そのファイルを Markdown エディターで開いて印刷してください。レイアウトがシンプルなので、紙でも読みやすく仕上がります。

#X Articles を1,000件読み取るコスト

Sorsa API なら、著者のプロフィール付きで X Articles を1,000件あたり$1.40から読み取れます。公式 X API はポストだけで$5.00、2026年11月22日からは著者のプロフィール付きで$15.00かかります。

Articles

公式 X API

$150

1万 記事の場合

著者付きで1 Article あたり$0.015、2026年11月22日から

Sorsa API

$14から

1万 記事の場合

1,000件あたり$1.40から、著者を含む

10分の1のコスト

Sorsa API では、Article は長さに関係なく1件が1リクエストです。6,000語のエッセイも500語のメモも同じ料金になります。1つのキーで毎秒20リクエストなら、所要時間は件数に比例して増えます。

ArticlesSorsa API(から)公式 X API(ポストのみ)公式 X API(著者付き、2026年11月22日から)Sorsa API の所要時間(毎秒20リクエスト)
1,000$1.40$5.00$15.00約1分
1万$14$50$150約8分
10万$140$500$1,500約1.4時間
100万$1,400$5,000$15,000約14時間
  • 1,000

    Sorsa API(から)
    $1.40
    公式 X API(ポストのみ)
    $5.00
    公式 X API(著者付き、2026年11月22日から)
    $15.00
    Sorsa API の所要時間(毎秒20リクエスト)
    約1分
  • 1万

    Sorsa API(から)
    $14
    公式 X API(ポストのみ)
    $50
    公式 X API(著者付き、2026年11月22日から)
    $150
    Sorsa API の所要時間(毎秒20リクエスト)
    約8分
  • 10万

    Sorsa API(から)
    $140
    公式 X API(ポストのみ)
    $500
    公式 X API(著者付き、2026年11月22日から)
    $1,500
    Sorsa API の所要時間(毎秒20リクエスト)
    約1.4時間
  • 100万

    Sorsa API(から)
    $1,400
    公式 X API(ポストのみ)
    $5,000
    公式 X API(著者付き、2026年11月22日から)
    $15,000
    Sorsa API の所要時間(毎秒20リクエスト)
    約14時間

Articles を見つける検索には、追加のリクエストがかかります。約20ポストごとのページ1つにつき1リクエストです。アカウントの Articles を週に1回取得する場合、1アカウントあたりのリクエストは数回で済みます。Articles を使った分析については、Twitter アナリティクス APIのガイドで説明しています。

#今日から X Articles を読み取る

Article を1件選び、それを共有しているポストのリンクをコピーして POST /article に送ってください。テキスト、カウンター、著者が1つの JSON オブジェクトで返ります。Sorsa API なら、著者込みで1,000件あたり$1.40からの料金、毎秒20リクエスト、開発者アカウント不要で、ご自身の X アカウントにリスクもありません。100回分の無料リクエストで、最初の100件の Articles を読み取れます。

#よくある質問

X Articles を読み取るには、どの API を使えばよいですか?

Sorsa API の POST /article を使います。1リクエストで、Article の全文、カバー、公開日、閲覧数、いいね数、リポスト数、ブックマーク数、著者のプロフィールが返り、料金は1,000件あたり$1.40からです。公式 X API では、2026年11月22日から著者付きの Article が1,000件あたり$15.00になり、開発者アカウントも必要です。Sorsa API に必要なのは API キー1つで、全プラン毎秒20リクエストで動作します。

X Article はダウンロードできますか?

はい。Article のポストのリンクを、Sorsa API の無料の X to Markdown コンバーターに貼り付けて、結果をコピーまたはダウンロードしてください。タイトル、著者、日付、本文が Markdown ファイルになります。多数の Articles なら、上で示したように、各 POST /article レスポンスをコードで .md ファイルに保存します。画像はリンクのままなので、残したいものは自分でダウンロードしてください。

X Articles を公開できるのは誰ですか。API からも投稿できますか?

公開には有料プランが必要です。X Premium か Premium+、The X Subscription の Plus・Premium・Super・Ultra の各プラン、または Premium Business か Organizations です。コードからは、公式 X API が著者の OAuth トークンで POST /2/articles/draft と POST /2/articles/{article_id}/publish を通じて公開します。Sorsa API は設計上、読み取り専用で、X アカウントには一切触れません。投稿もする場合は、公式 X API と組み合わせてください。

過去に公開された X Articles も読み取れますか?

はい。2024年3月7日の開始以降の公開 Article は、著者が削除したか購読者限定にした場合を除き、ポストのリンクか ID を指定して POST /article で取得できます。古い Articles を探すには、url:x.com/i/article の検索に since: と until: の日付を加え、検索結果の各ポストを読み取ります。

X Articles を1,000件読み取るといくらかかりますか?

Sorsa API では1,000件あたり$1.40からです。Article は長さに関係なく1件が1リクエストで、著者のプロフィールも含まれ、失敗したリクエストは無料です。公式 X API は、ポストの読み取りで1,000件あたり$5.00、2026年11月22日からは著者のプロフィール付きで$15.00を課金します。Sorsa API の100回分の無料リクエストで、最初の100件の Articles を無料で読み取れます。

#本ガイドの調査と検証の方法

2026年11月2日に、POST /article と POST /search-tweets の最新の Sorsa API リファレンスを、X のポスト取得リファレンス、従量課金の料金表、展開に関する10月23日の通知と照合しました。あわせて、Articles に関する X ヘルプセンターのページ、2024年3月7日の X の開始告知、tweet.fields で Articles を読み取ることについての2026年9月8日の X スタッフの回答も確認しています。このページのリクエストとレスポンスは、デモアカウントを使って API リファレンスから作成したものです。今回の更新では、実在の Article に対しては実行していません。

Sorsa APIチーム 読み取り専用のX(Twitter)APIとスクレイピングツール、Sorsa APIを開発・運営しています。2022年から本番稼働し(旧TweetScout API)、累計60億リクエスト以上を処理しています。 Sorsa APIについて

変更点
  • 全面的に書き直しました。公式 X API による Article の読み取り方法と2026年11月22日からの課金、ポストと Article の ID を判別するリンク検査ツール、最新の API リファレンスに基づくレスポンスフィールド、アカウントの Article の探し方と Markdown での保存方法を追加しています。
  • 初公開。