AP News API: Read article
Reads the full text and details of one public AP News article from its link or headline.
Unofficial. Not affiliated with or endorsed by AP News.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Article, required
article AP News article link or headline, e.g. https://apnews.com/article/california-san-clemente-beach-erosion-rail-1843fb400da08a60aa6a9082279c04cf
https://apnews.com/live/top-25-college-football-poll-9-27-2026
Input as JSON
{ "article": "https://apnews.com/live/top-25-college-football-poll-9-27-2026" }Output
{ "tags": [ "College football", "My Fan Picks", "Top 25" ], "authors": [ "Maura Carey", "Luena Rodriguez-Feo Vileira", "Sharon L. Lynch" ], "section": "Sports", "summary": "The AP Top 25 poll moved Florida up to No. 8, Miami up to No. 4 and Ole Miss down to No. 9. Texas, Georgia and Notre Dame went 1-2-3 again. See the latest college football rankings.", "headline": "AP Top 25 highlights: Florida flies into the top 10 as four new teams join the rankings", "article_id": null, "paragraphs": [ "WATCH: AP Top 25 Week 4 recap: College football is so back: AP's Top 25 Explained", "Jeremiah Smith becomes a Heisman favorite: One week after Jeremiah Smith became Ohio State’s all-time leading receiver, he takes over as a Heisman favorite after exploding for 12 receptions, 217 receiving yards and four touchdowns – that’s Jeremiah Smith for you. Smith’s odds jumped from +950 to +29…", "Ask a voter: Walk us through how you've voted No. 1 this season: Walk us through how you've voted No. 1 this season, from the preseason rankings to moving Georgia to the top spot this week. I opted to put ultra-talented Ohio State No. 1 on my preseason ballot for various reasons. The fall-from-ahead…" ], "updated_at": "2026-09-27T21:12:30.581000+00:00", "word_count": 2853, "article_url": "https://apnews.com/live/top-25-college-football-poll-9-27-2026" , "published_at": "2026-09-27T15:09:04.240000+00:00", "main_image_url": "https://dims.apnews.com/dims4/default/35ef284/2147483647/strip/false/crop/1440x810+0+0/resize/1200x675!/quality/90/?url=https%3A%2F%2Fassets.apnews.com%2F83%2F32%2F7c5c94ef4dbf97526593774d6f55%2F4-1.png" , "main_image_caption": null, "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":"apnews.com/read_article","input":{"article":"https://apnews.com/live/top-25-college-football-poll-9-27-2026"}}' # 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": "apnews.com/read_article" , "input": { "article": "https://apnews.com/live/top-25-college-football-poll-9-27-2026" }})# 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": "apnews.com/read_article" , "input": { "article": "https://apnews.com/live/top-25-college-football-poll-9-27-2026" } }), 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 apnews.com/read_article# with {"article":"https://apnews.com/live/top-25-college-football-poll-9-27-2026"}"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": "AP News article link or headline, e.g. https://apnews.com/article/california-san-clemente-beach-erosion-rail-1843fb400da08a60aa6a9082279c04cf" } }}Output schema
{ "type": "object", "required": [ "headline", "paragraphs", "full_text_available", "word_count", "article_url" ], "properties": { "tags": { "type": "array", "items": { "type": "string" } }, "authors": { "type": "array", "items": { "type": "string" } }, "section": { "type": [ "string", "null" ] }, "summary": { "type": [ "string", "null" ] }, "headline": { "type": "string" }, "article_id": { "type": [ "string", "null" ] }, "paragraphs": { "type": "array", "items": { "type": "string" } }, "updated_at": { "type": [ "string", "null" ] }, "word_count": { "type": "integer" }, "article_url": { "type": "string" }, "published_at": { "type": [ "string", "null" ] }, "main_image_url": { "type": [ "string", "null" ] }, "main_image_caption": { "type": [ "string", "null" ] }, "full_text_available": { "type": "boolean" } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
apnews.com/read_article- Returns
- headline, summary, authors, dates, section, tags, image, paragraphs, word count
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 apnews.com/read_article with the inputs above.
Ask your agent
- Pull up the full text of this AP article: https://apnews.com/article/california-san-clemente-beach-erosion-rail-1843fb400da08a60aa6a9082279c04cf and tell me who wrote it and when it was published.
- Can you open the AP story titled about the Senate passing a stopgap spending bill and give me its summary, tags, and word count?
- I need the byline, section, and paragraphs of the AP News piece on the Midwest flooding recovery efforts.
- Read the article at this link and list its headline, dates, and image caption: https://apnews.com/article/climate-heat-wave-urban-cooling-7f3a9c21
- Get the details of the AP report about a wildfire evacuation order in northern Oregon, including the section and tags.
See more
All AP News methodsLists AP News headlines in the order shown on a public section page, up to 50 stories. Author credits and the article section are added for the first 20 articles only.
apnews.com/list_headlinesReads an NPR article by its link or headline and returns its text and publication details. For live blogs, returns the displayed updates.
npr.org/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_articleReads a public Daily Mail article from its link, or from a headline (the best-matching result of the site's search), and returns its text and details; live blogs give the latest entries shown on the page.
dailymail.co.uk/read_article