Use cases / Reuters News API, Associated Press API, Bloomberg News API
Financial news alerts
Last updated September 28, 2026. Response excerpts are recorded from the live API.
Who
Who runs this, and what for
| Team | What they decide with it |
|---|---|
| Traders and analysts | Whether news on a holding needs a look before the market moves on it. |
| Investor relations teams | What the major outlets published about the company and its peers today. |
| Fintech and research products | Which stories to attach to a ticker page or feed to a model. |
Pipeline
The calls, step by step
01List each outlet's business section
Each news API lists a section in one request. Reuters takes a section path such as business, AP a section such as business, and Bloomberg a rail such as markets. Results have the title, URL, and publish time; Bloomberg and Reuters add the section and authors.
GET /v1/search?engine=bloomberg_news§ion=latest · results.0
{ "position": 1, "title": "US, Iran Said to Be Exploring Phased Deal to Open Hormuz", "url": "https://www.bloomberg.com/news/articles/2026-09-24/us-iran-said-to-be-exploring-phased-deal-to-open-hormuz", "section": "politics", "kicker": "Middle East", "authors": [ { "name": "Fiona MacDonald", "url": null } ], "premium": false }Recorded response. Live values differ. 02Match the watchlist
Compare each title with your company names. Headlines use short names, such as Apollo for Apollo Global Management, so list the names the press uses.
GET /v1/search?engine=reuters_news§ion=world · results.0
{ "position": 1, "id": "ZYK6TDJ2VBKEHICD7UGXKGPR3Q", "title": "Trump warns in UN speech he could 'annihilate' Iran without peace deal", "url": "https://www.reuters.com/world/americas/trump-set-whirlwind-un-meetings-with-wars-iran-ukraine-agenda-2026-09-22/", "published_at": "2026-09-22T05:04:00.006Z", "section": "World", "kicker": "Americas", "authors": [ { "name": "Gram Slattery", "url": "https://www.reuters.com/authors/gram-slattery/" } ], "content_type": "article", "premium": false }Recorded response. Live values differ. 03Read each match
The article endpoint returns the paragraphs, authors, publish time, and tags. On a metered Bloomberg or Reuters story only the public paragraphs come back and body_truncated is true; the headline and lead are usually enough for an alert.
GET /v1/article?engine=bloomberg_news&url=https%3A%2F%2Fwww.bloomberg.com%2Fnews%2Farticles%2F2026-09-22%2Fapollo-caps-private-credit-fund-again-after-14-7-look-to-exit · article
{ "id": "TLGPOGKK3NYH00", "title": "Apollo Caps Private Credit Fund Again After 14.7% Look to Exit", "description": "Apollo Global Management Inc. is limiting redemptions from a private credit fund for the third straight quarter, as its investors join the rush to pull cash from the $1.8 trillion direct lending market.", "url": "https://www.bloomberg.com/news/articles/2026-09-22/apollo-caps-private-credit-fund-again-after-14-7-look-to-exit", "language": "en", "authors": [ { "name": "Olivia Fishlow", "url": "https://www.bloomberg.com/authors/AXMJhR-IRl0/olivia-fishlow" } ], "published_at": "2026-09-22T21:00:42.020Z", "updated_at": "2026-09-22T21:00:42.020Z", "section": "markets", "subsection": null, "tags": [ "Private Credit", "Software", "Private Market" ], "image": { "url": "https://assets.bwbx.io/images/users/iqjWHBFdfxIU/iXBnBEqKkiAc/v1/-1x-1.webp", "caption": "Apollo Global Management signage in New York.", "credit": "Jeenah Moon/Bloomberg" }, "highlights": [], "paragraphs": [ "Apollo Global Management Inc. is limiting redemptions from a private credit fund for the third straight quarter, as its investors join the rush to pull cash from the $1.8 trillion direct lending market.", "Apollo Debt Solutions BDC, which has about $26 billion in assets, told shareholders that it would again cap withdrawals at 5% of outstanding shares on Tuesday after 14.7% sought to pull their cash, ..." ], "word_count": 86, "reading_time_minutes": 1, "access": "metered", "body_truncated": true, "related": [ { "title": "Murky Default Metrics", "url": "https://www.bloomberg.com/news/articles/2026-09-17/private-credit-defaults-are-1-6-or-19-depending-who-you-ask" } ] }Recorded response. Live values differ.
Code
A script to start from
news_alerts.py
# Every 15 minutes: new Reuters, AP, and Bloomberg business headlines that
# name a company on the watchlist, with the article text for each match.
import json, os, pathlib, requests
API = "https://api.clair.im"
HEADERS = {"Authorization": f"Bearer {os.environ['CLAIR_API_KEY']}"}
WATCHLIST = ["Nvidia", "Apollo", "Stripe", "OpenAI"]
LISTINGS = [("reuters_news", {"section": "business"}),
("ap_news", {"section": "business"}),
("bloomberg_news", {"section": "markets"})]
STATE = pathlib.Path("seen.json")
seen = set(json.loads(STATE.read_text())) if STATE.exists() else set()
def get(path, **params):
r = requests.get(f"{API}{path}", headers=HEADERS, timeout=60, params=params)
r.raise_for_status()
return r.json()
for engine, params in LISTINGS:
for item in get("/v1/search", engine=engine, **params)["results"]:
names = [n for n in WATCHLIST if n.lower() in item["title"].lower()]
if not names or item["url"] in seen:
continue
seen.add(item["url"])
article = get("/v1/article", engine=engine, url=item["url"])["article"]
lead = " ".join(article["paragraphs"][:2])
cut = " (truncated)" if article["body_truncated"] else ""
print(f"{', '.join(names)} | {engine}: {article['title']}{cut}\n {lead[:300]}")
STATE.write_text(json.dumps(sorted(seen)))
Set CLAIR_API_KEY to a key subscribed to the Reuters News API and Associated Press API and Bloomberg News API. Each call is one request against that API's monthly quota.
Cost
What it costs per month
| Schedule | Requests | Plan | Per month | Per 1,000 |
|---|---|---|---|---|
| 3 outlets every 15 minutes, 5 matches a day96 runs a day × 30 days = 2,880 listings per outlet, plus about 50 articles each. | 8,790 | Pay as you go + Pay as you go + Pay as you go | $54.21 | $6.17 |
| 3 outlets hourly, 5 matches a day720 listings per outlet, plus about 50 articles each. | 2,310 | Pay as you go + Pay as you go + Pay as you go | $14.24 | $6.16 |
| Bloomberg only, every 5 minutes288 runs a day × 30 = 8,640 listings, plus about 300 articles. | 8,940 | Pay as you go | $47.38 | $5.30 |
Limits
What to plan for
- Each news API is its own subscription with its own quota. Start with the outlet your readers rely on most.
- Listings are one page of the section's latest stories. Poll often enough that a busy section does not scroll a story off between runs.
- Reuters blocks site search, so match on section listings. AP and Bloomberg also accept q for keyword search.
- This is the public website, not a licensed wire feed: no embargoed or subscriber-only stories, and not for republishing.
FAQ
Common questions
Is this as fast as a terminal?
No. It sees a story when it appears on the outlet's website, and a polling interval adds delay. For trading on seconds, license the wire.
Can I match on tickers?
Headlines rarely include tickers. Map each ticker to the company names the press uses and match on those; article tags sometimes carry the company name too.
Why do Bloomberg articles come back truncated?
Bloomberg meters its stories. Signed-out visitors see the first paragraphs, and Clair returns what is shown, with body_truncated set so you can tell.
Run it on your own products
200 requests a month free on each API, no card. Enough to run the pipeline on a short list before choosing a plan.
Bloomberg News API
Associated Press API
Glassdoor API
Greenhouse Jobs API

Crunchbase API
Website Contacts API