Skip to main content

Reuters Private API

PyPI Python License Downloads

A small Python client and API map for Reuters' public mobile JSON endpoints.

Features - Installation - Quick Start - API - API Notes - Development

This repository turns the Reuters Android API mapping work into a minimal Python package. It can read public section pages, follow the mobile "fetch more" pagination flow, and fetch public article details while keeping the original JSON payload available for callers that need fields beyond the typed dataclasses.

[!IMPORTANT] This is an unofficial client for public Reuters web/mobile endpoints observed from the Android app. Endpoints can change, and Reuters may reject or challenge automated traffic. Use it responsibly and respect Reuters' terms.

Features

  • Iterate Reuters category and section article summaries from paths such as /world/americas/.
  • Optionally follow category pagination through Reuters' fetch_more endpoint.
  • Fetch public article detail payloads, including authors, timing metadata, and body content elements.
  • Return frozen dataclasses with common fields plus the raw Reuters JSON.
  • Include API mapping notes for mobile REST, GraphQL/identity behavior, and the Android widget feed.

Installation

Requires Python 3.9 or newer.

python -m pip install reuters-private-api

For local development, use an editable install:

python -m venv .venv
source .venv/bin/activate
python -m pip install -e .

Quick Start

from itertools import islice

from reuters_private_api import ReutersClient

client = ReutersClient()

summaries = list(islice(client.iter_articles("/world/americas/", load_more=True), 10))

for summary in summaries:
    print(summary.display_time, summary.title)
    print(summary.url)

article = client.get_article(summaries[0].url)
print(article.title)
print(article.read_minutes)

for element in article.content_elements:
    print(element.get("type"), element.get("content"))

[!TIP] Pass Reuters URL paths, not full URLs. Use /world/americas/ or /world/example-2026-08-13/; full https://... URLs are rejected on purpose.

API

ReutersClient(timeout=30, client=None)

Creates an HTTP client configured for Reuters' public JSON endpoints. You can pass your own httpx.Client to control retries, proxies, custom transports, or shared connection pooling.

iter_articles(category_path, load_more=False)

Yields ArticleSummary objects for a Reuters category path.

for article in client.iter_articles("/world/", load_more=True):
    print(article.id, article.title)

When load_more=True, the client follows the Reuters category pagination endpoint until Reuters returns an empty page. Results are de-duplicated by article ID.

get_article(article_path)

Fetches one public article detail payload and returns an Article.

summary = next(client.iter_articles("/business/"))
article = client.get_article(summary.url)

Data Models

Type Fields
ArticleSummary id, url, title, description, display_time, section, section_url, authors, thumbnail, raw
Article id, url, title, description, display_time, published_time, updated_time, word_count, read_minutes, authors, content_elements, raw

API Notes

The detailed mapping is in docs/apis:

  • mobile-rest.md covers the public mobile JSON endpoints, category pagination, article detail responses, menu/config routes, markets quotes, and geo helper.
  • graphql-identity.md documents the observed GraphQL transport, public search/feed behavior, authenticated-field boundaries, and embedded operation inventory.
  • native-widget.md describes the Android widget feed and parsing behavior.

Development

The package is intentionally small: reuters_private_api/client.py contains the HTTP behavior, and reuters_private_api/types.py contains the dataclasses.

Run a quick syntax check with:

python -m compileall reuters_private_api

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

reuters_private_api-0.1.0.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

reuters_private_api-0.1.0-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

Details for the file reuters_private_api-0.1.0.tar.gz.

File metadata

  • Download URL: reuters_private_api-0.1.0.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.9

File hashes

Hashes for reuters_private_api-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e20e9edf6d78f19f7b38a8b743adef7433f0da5e70fc6b8e10e87246f0940848
MD5 20eb621d94ee82cb951cc01723319568
BLAKE2b-256 1e6f5b617450a20c5ec530ef3164230458f72e5fe6eb8c49bd69dc4d863b7b5f

See more details on using hashes here.

File details

Details for the file reuters_private_api-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for reuters_private_api-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 23610dfbf671f980c6946b7c703db2fcbfa8be742deb22a874b87ad6c7cb60fa
MD5 6e2954c2083561ade7b89e59e92be2c1
BLAKE2b-256 d3f8f89469be76ab49324d5b0c20040cadb6d64dfd50cd79c900aee19dcd8f26

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page