NPR API: Read article
Reads an NPR article by its link or headline and returns its text and publication details. For live blogs, returns the displayed updates.
Unofficial. Not affiliated with or endorsed by NPR.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Article, required
article NPR article link or headline, for example: The Trump administration weakens fuel efficiency standards for new cars.
https://www.npr.org/live-updates/plane-helicopter-crash-dc-airport-potomac
Input as JSON
{ "article": "https://www.npr.org/live-updates/plane-helicopter-crash-dc-airport-potomac" }Output
{ "tags": [], "authors": [ "NPR Washington Desk", "Chandelis Duster", "Lisa Hagen" ], "section": null, "summary": "A regional jet carrying 64 people collided in midair with a Black Hawk helicopter as the plane was approaching a runway at Ronald Reagan Washington National Airport on Wednesday night.", "headline": "Live updates: D.C. plane crash victims include U.S. figure skaters, former Russian world champions", "article_id": "00000194-b6e6-db77-afb5-bfffb1ee0000", "paragraphs": [ "Trump says Americans shouldn't be afraid to fly", "Asked if Americans should feel hesitant to fly, President Trump said:", "“No. Not at all. I would not hesitate to fly. This is something that — it’s been many years since something like this has happened, and the collision is just something that we don’t expect it to happen ever again,” he said." ], "updated_at": "2025-01-30T16:53:38.970000+00:00", "word_count": 3535, "article_url": "https://www.npr.org/live-updates/plane-helicopter-crash-dc-airport-potomac" , "published_at": "2025-01-30T11:23:26.046000+00:00", "main_image_url": "https://npr.brightspotcdn.com/aa/84/deb43f92403d9e2602488754a62c/dscf0031-edit.jpg" , "main_image_caption": "A boat works the scene in the Potomac River near Ronald Reagan Washington National Airport early Thursday morning.", "full_text_available": true}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"npr.org/read_article","input":{"article":"https://www.npr.org/live-updates/plane-helicopter-crash-dc-airport-potomac"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "npr.org/read_article" , "input": { "article": "https://www.npr.org/live-updates/plane-helicopter-crash-dc-airport-potomac" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "npr.org/read_article" , "input": { "article": "https://www.npr.org/live-updates/plane-helicopter-crash-dc-airport-potomac" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run npr.org/read_article# with {"article":"https://www.npr.org/live-updates/plane-helicopter-crash-dc-airport-potomac"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "article" ], "properties": { "article": { "type": "string", "description": "NPR article link or headline, for example: The Trump administration weakens fuel efficiency standards for new cars." } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "headline", "summary", "authors", "published_at", "updated_at", "section", "tags", "main_image_url", "main_image_caption", "paragraphs", "full_text_available", "word_count", "article_url", "article_id" ], "properties": { "tags": { "type": "array", "items": { "type": "string" }, "description": "Article tags" }, "authors": { "type": "array", "items": { "type": "string" }, "description": "Article authors" }, "section": { "type": [ "string", "null" ], "description": "NPR section" }, "summary": { "type": [ "string", "null" ], "description": "Article summary or standfirst" }, "headline": { "type": "string", "description": "Article headline" }, "article_id": { "type": [ "string", "null" ], "description": "NPR article ID", "x-fous-developer": true }, "paragraphs": { "type": "array", "items": { "type": "string" }, "description": "Article text paragraphs" }, "updated_at": { "type": [ "string", "null" ], "description": "Last updated date and time" }, "word_count": { "type": "integer", "description": "Word count of returned text" }, "article_url": { "type": "string", "description": "NPR article link" }, "published_at": { "type": [ "string", "null" ], "description": "Publication date and time" }, "main_image_url": { "type": [ "string", "null" ], "description": "Main image link" }, "main_image_caption": { "type": [ "string", "null" ], "description": "Main image caption" }, "full_text_available": { "type": "boolean", "description": "Whether the full text is present" } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
npr.org/read_article- Returns
- headline, summary, authors, dates, section, tags, image, paragraphs
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method npr.org/read_article with the inputs above.
Ask your agent
- Can you pull up the full text of this NPR story about the new fuel efficiency rule and tell me who wrote it and when it was published?
- I need the byline, publication date, and section for the NPR article titled 'The Trump administration weakens fuel efficiency standards for new cars.'
- Grab the paragraphs and tags from https://www.npr.org/2024/03/15/heat-wave-climate-report and summarize what it covers.
- Show me the headline, image, and summary of the latest NPR piece on rising grocery prices, plus the updates if it's a live blog.
- What does the NPR article about the Senate budget vote say, and which tags and section is it filed under?
See more
All NPR methodsSearches NPR-published articles by keyword, newest first or by best match, with optional publication dates, and returns each article's date, authors, section and summary.
npr.org/search_newsLists the headlines on an NPR section page in page order, with summaries, publication times, authors, images and article links.
npr.org/list_headlinesReads the full text and details of one public AP News article from its link or headline.
apnews.com/read_articleReads the text and details of a BBC News article from its link or headline. Live coverage pages return the latest entries available.
bbc.com/read_articleReads a CNN article by link or headline and returns its headline, summary, authors, dates, section, tags, main image and public paragraphs. Subscriber stories return only a brief public preview; live blogs include their entries.
cnn.com/read_articleReads a public Yahoo News article from its link or headline and returns its text and details. Headline matching uses Yahoo News search results.
yahoo.com/read_articleReads one public Guardian article by link or headline and returns its details and available full-text paragraphs. Live blogs return the latest entries shown on the page; some older articles may be unavailable.
theguardian.com/read_articleReads one public Al Jazeera article from its link, or from a headline (the best match of the site's own search), and returns its text and details; live blogs give their latest ten entries.
aljazeera.com/read_article