Torn Intel exposes a small read-only public API alongside the faction dashboard. The endpoints below need no key, no header and no cookie — they answer an anonymous request. Everything else under /api is scoped to a signed-in player.
The machine-readable version of this page is an OpenAPI 3.1 document, generated from the same source, so the two cannot disagree.
The public endpoints on this page take no credentials. Every other endpoint authenticates with the torn-intel-session cookie, a JWT issued by POST /api/auth/loginin exchange for a Torn API key, and returns the signed-in player's own faction data only. There is no public endpoint that reads an arbitrary faction and no parameter that makes one.
How Torn API keys are encrypted at rest, and which Torn permission level unlocks what, is documented on the Security page.
Torn Intel MCP server
A remote Model Context Protocol server runs at /api/mcp over the Streamable HTTP transport (spec revision 2025-06-18). It is read-only, needs no credentials, and exposes exactly the public surface below — an MCP server that could reach further than the public API would be a way around the session boundary, not a convenience.
claude mcp add --transport http torn-intel https://torn-intel.com/api/mcp
Tools:
get_abroad_stock — Get live abroad stock
get_abroad_stock_history — Get observed stock history for one item
get_platform_stats — Get Torn Intel coverage counters
list_guides — List Torn game-mechanic guides
get_guide — Get the full text of one guide
search_guides — Search guides by keyword
Torn Intel CLI
An official command-line tool, zero dependencies, no API key. Output is JSON on stdout so it composes with jq.
The canonical form of every public endpoint is versioned: `https://torn-intel.com/api/v1/public/stats`. Integrate against that.
The unversioned path is a permanent alias of the same handler, kept working indefinitely.
Every API response carries `X-API-Version: 1`.
A breaking change ships as a new version prefix (`/api/v2/...`). A v1 response shape is never mutated in place; adding a field is not breaking, removing or retyping one is.
A version scheduled for removal answers with `Deprecation` (RFC 9745) and `Sunset` (RFC 8594) headers plus a `Link rel="deprecation"`, for at least 180 days before it stops.
Nothing is currently deprecated.
Rate limits
120 requests per 60 seconds per client, across all public endpoints combined. The session-scoped API is not metered by this policy.
Every response carries RateLimit-Policy and RateLimit (the structured fields from draft-ietf-httpapi-ratelimit-headers-09), plus the older RateLimit-Limit / -Remaining / -Reset triplet that deployed clients read.
Exceeding it returns 429 as application/problem+json with the RFC 9457 quota-exceeded problem type and a Retry-After header. Wait that long — do not retry immediately.
Errors
Every error under /api is JSON, never an HTML page, and carries a stable machine-readable code plus a resolution saying what to do about it. Branch on code, not on the prose fields.
{
"error": "Not Found",
"code": "not_found",
"message": "No API endpoint exists at /api/nope.",
"resolution": "Check the endpoint list at https://torn-intel.com/developers ...",
"status": 404,
"documentation_url": "https://torn-intel.com/developers"
}
Rules of use
Respect the cache window listed on each endpoint. The data behind them refreshes on a schedule, so polling faster returns identical bytes.
Send a User-Agent that identifies your tool, so a misbehaving client can be contacted rather than blocked.
Restock predictions — estimated time to restock, restock windows, model confidence — are never public. They stay behind login under TornTools' terms, and no parameter unlocks them.
Torn Intel is a player-made tool and is not affiliated with Torn.com.
Public endpoints
GET/api/v1/public/foreign-stock
Current foreign stock, grouped by country. Each item carries quantity, buy cost, Torn market value and the resulting profit per item. Restock predictions are not exposed here: they are available to signed-in users only.
Returns a single boolean keyed by Torn player ID. Exposes no personal data, which is why it is unauthenticated and open to cross-origin calls from the in-game script.
Response
application/json
Cache
not cached
CORS
Allowed from any origin
playerId(integer, required) — Torn player ID (XID).
400 — playerId missing or not a number.
{ "registered": true }
GET/api/v1/news/public
Newest first. Each article carries id, title, content, tag, optional image URL and publish date.
Every public page on Torn Intel serves a Markdown representation from its own URL, so an agent can skip the layout markup. Ask for it with an Accept header, or append .md to the path:
Responses carry Vary: Accept, so a cache in between will not hand you the wrong variant. A request whose Accept rules out both text/html and text/markdown gets a 406 listing the available types rather than a silent fallback.
/llms.txt — This index, in the llmstxt.org format.
/agents.md — When to use Torn Intel, when not to, and how an agent should call it.
/sitemap.xml — Every indexable URL with its last-modified date.
🍪
Cookie Consent
We use analytics to understand how Torn Intel is used. Choose what you allow. Session cookies are strictly necessary and always active. Privacy policy