API docs
Official press releases from company newsrooms and newswires, as JSON and RSS. The lists are free and need no key.
- Base URL
https:// pressreleasefeed.org - Index
GET /api/v1lists every endpoint- JSON
{ "data": …, "meta": … }- Errors
{ "error": "message" }- CORS
- Any origin
- API key
- Only for full text
On this page
Access
Everything is open except full text. Every endpoint answers without a key; a key adds the body of each release.
| Endpoints | Without a key | With a key |
|---|---|---|
/api/v1/releases, /api/v1/releases/{id}, /api/v1/largest-companies | Every field but the body | body_html and body_text too, and meta.full_text is true |
/feed.xml | Every item, without its body | Each item’s body in <content:encoded> |
/api/v1/publishers, /api/v1/topics, /api/v1/companies, /api/v1/niches, /api/v1/regions | Everything | The same answer |
Sending a key
| Send | Where |
|---|---|
Authorization: Bearer <key> | A request header |
X-API-Key: <key> | A request header |
?key=<key> | The query string, on /feed.xml only: feed readers cannot send headers |
curl -H "Authorization: Bearer YOUR_API_KEY" "https://pressreleasefeed.org/api/v1/releases?per_page=10"- A key that fails is an error. A wrong key returns
401and a revoked key403, never a silent fallback to the public answer. - Keys stay out of URLs. On the JSON endpoints a
?key=parameter returns400: send the header instead, so the key stays out of URLs and logs. - A feed URL with a key is a secret. Treat any feed URL that contains
?key=as one.
Releases
GET/api/v1/releases
Releases from every newsroom and newswire we follow, newest first.
Every parameter is optional. Values in one parameter are alternatives, and different parameters must all match.
| Parameter | Values | Meaning |
|---|---|---|
publisher | apple or apple,ibm | Up to 10 publisher slugs from /api/v1/publishers. May repeat. |
topic | ai | One topic slug; Topics lists all 12. |
language | en, ja, zh-hans | The original language of the release. |
kind | brand or wire | Company newsrooms (brand) or newswires (wire). |
companies | largest | Only releases from the largest companies: the list Largest companies describes. |
company | toyota or toyota,samsung-electronics | Releases linked to any of up to 10 company slugs from /api/v1/companies. May repeat. |
region | asia | Releases linked to a company in a region from /api/v1/regions. |
country | JP | An ISO 3166-1 alpha-2 code, in any case: the country a linked company is run from. |
niche | automotive | One of the 30 niches from /api/v1/niches. |
company_language | ja | An ISO 639-1 code: a linked company’s home language. language stays the release’s own language. |
q | earnings | A keyword of 2 to 160 characters, matched in titles and summaries. |
since, until | 2026-10-01, 2026-10-12T08:00:00Z | UTC unless an offset is given. A date-only until includes that whole day. |
page | 1 to 500 | The page to return, 1 by default. |
per_page | 1 to 100 | Releases per page, 25 by default. |
Parameters the API does not know are ignored: brand= from older endpoints has no effect, so use publisher=.
curl "https://pressreleasefeed.org/api/v1/releases?publisher=apple&topic=ai&per_page=10"{
"data": [
{
"id": "9f91ab84-4ade-49d1-b9ae-be5c1a216e38",
"title": "…",
"summary": "…",
"url": "https://www.apple.com/newsroom/…",
"image_url": "https://…",
"language": "en",
"published_at": "2026-10-12T13:59:49.000Z",
"word_count": 812,
"company": "Apple",
"publisher": { "slug": "apple", "name": "Apple", "kind": "brand" },
"topics": ["ai"],
"companies": [{ "slug": "apple", "name": "Apple Inc." }]
}
],
"meta": {
"total": 46,
"page": 1,
"per_page": 10,
"full_text": false,
"filters": { "publisher": ["apple"], "topic": "ai", "…": "…" },
"generated_at": "…"
}
}With a valid key every release also carries body_html and body_text, and meta.full_text is true.
The fields
companyis the issuing company: a newsroom’s own name, or the company a wire release names as its issuer. That is its SOURCE line on PR Newswire, Canada Newswire, ACN and JCN, its “Source:” line on Newsfile, its header on GlobeNewswire, or the name right after the Business Wire tag. It isnullwhen no issuer was detected, never the wire’s name.companieslists the directory companies the release is linked to, as{ "slug", "name" }, and is empty when there are none. The release’s first link comes first, the rest by name. It is not thecompanies=largestparameter, and it is notcompany, the issuer named in the release.- A release is linked to a company when the company’s name is in its headline, a contact-block email address or website at the bottom of the release uses the company’s domain, the wire’s own source field names the company, or it comes from the company’s own newsroom.
- Notices from law firms about a company (a class action, an investigation, a lawsuit) are never linked to it. A release is one when its lead or its headline uses a class-action notice’s phrases, or when its headline is about investors, securities, a lawsuit or an investigation and it comes from a law firm (the wire’s source line) or names a plaintiff firm.
urlandimage_urlarenullwhen the source gave anything other than an http(s) link.
Clean text
Titles, summaries and bodies come without newswire tags and wire boilerplate; url still links to the original release. This is what comes out:
- Tags.
/PRNewswire/(also with a suffix, such as/PRNewswire-FirstCall/) and/CNW/,(GLOBE NEWSWIRE),( BUSINESS WIRE ),(ACN Newswire)(also(JCN Newswire)and(亞太商訊)),(ACCESSWIRE), and ACCESS Newswire’s tag between a dateline’s city and date:WEST PALM BEACH,becomesFL / ACCESS Newswire / September 29, 2026 WEST PALM BEACH,.FL / September 29, 2026 - From a Newsfile dateline only
Newsfile Corp. -inside the parentheses goes, and the date stays:(Newsfile Corp. - October 12,becomes2026) (October 12, 2026).
- From a Newsfile dateline only
- Boilerplate lines. PR Newswire’s “View original content…” link and its “Photo - …” and “Logo - …” links to
mma.prnewswire.com; the “This is a paid press release. Contact the press release distributor directly with any inquiries.” notice; Newsfile’s “To view the source version of this press release, please visit …” link and its “Ready to Announce with Confidence? … Contact Us” promotion; and the ACN copyright line,Copyright <year> ACN Newswire. All rights reserved. www.acnnewswire.com(also in its JCN Newswire and 亞太商訊 forms). - What stays. Other wire text stays as published: Business Wire’s “View source version on businesswire.com: …” link, GlobeNewswire’s photo lines, and a wire’s name in running text or in a URL.
Keyword search
- A search with
qreportsmeta.totalasnull: counting the matches would mean scanning the whole archive. Paging still works. - A keyword search that takes more than a few seconds (typically a rare word across the whole archive) returns
400. Narrow it withsince,publisher,topicorlanguage.
Filtering by company
company, region, country, niche and company_language describe the company a release is linked to.
- Alternatives and combinations. Values within one parameter are alternatives:
company=toyota,means Toyota or Samsung Electronics. Different parameters must all match, and they must match the same company:samsung-electronics region=asia&returns releases linked to an Asian automotive company, not releases that mention some Asian company and some automotive company (say an Asian bank and a European carmaker).niche=automotive languageis the release’s language,company_languagethe company’s. A Japanese carmaker’s English release matcheslanguage=en&.company_language=ja - No matches is not an error. A valid combination that nobody satisfies, such as
company=toyota&, or a country with no companies, returnsniche=banking 200with"data": []andmeta.total0. - Unknown values are a
400. An unknown company slug (Unknown company: …, which includes a company that was removed from the directory), region, niche, country code or language code returns400with{ "error": "…" }. - Where the values come from.
/api/v1/companies,/api/v1/nichesand/api/v1/regionslist the slugs and codes.
curl "https://pressreleasefeed.org/api/v1/releases?region=asia&niche=automotive&per_page=10"One release
GET/api/v1/releases/{id}
One release by its id, with the same fields as in the lists, companies included. An unknown id returns 404.
| Parameter | Values | Meaning |
|---|---|---|
id | A UUID | In the path: the id of a release from any list. |
curl "https://pressreleasefeed.org/api/v1/releases/9f91ab84-4ade-49d1-b9ae-be5c1a216e38"{
"data": {
"id": "9f91ab84-4ade-49d1-b9ae-be5c1a216e38",
"title": "…",
"summary": "…",
"url": "https://www.apple.com/newsroom/…",
"image_url": "https://…",
"language": "en",
"published_at": "2026-10-12T13:59:49.000Z",
"word_count": 812,
"company": "Apple",
"publisher": { "slug": "apple", "name": "Apple", "kind": "brand" },
"topics": ["ai"],
"companies": [{ "slug": "apple", "name": "Apple Inc." }]
},
"meta": { "full_text": false, "generated_at": "…" }
}With a valid key it also carries body_html and body_text, and meta.full_text is true.
Largest companies
GET/api/v1/largest-companies
The same list as /, with every other filter and the same paging.
It holds releases that link to a company in the company directory (about 1,200 of the world’s largest companies, refreshed yearly) and every release from a company newsroom we follow.
It takes every parameter Releases takes except companies, which it sets to largest:
publishertopiclanguagekindcompanyregioncountrynichecompany_languageqsinceuntilpageper_page
curl "https://pressreleasefeed.org/api/v1/largest-companies?language=en&per_page=10"{
"data": [
{
"id": "9f91ab84-4ade-49d1-b9ae-be5c1a216e38",
"title": "…",
"company": "Apple",
"companies": [{ "slug": "apple", "name": "Apple Inc." }],
"…": "…"
}
],
"meta": {
"total": 46,
"page": 1,
"per_page": 10,
"full_text": false,
"filters": { "language": "en", "companies": "largest", "…": "…" },
"generated_at": "…"
}
}Which releases link to a company
- A release links to a company when its headline names the company, its contact block carries one of the company’s email or web domains, or the wire’s source line names it as the issuer.
- A name that is an everyday word (Target, Shell) counts in a headline only beside the full name or another signal.
- A law firm’s notice about a company (a class action, an investigation, a lawsuit) does not link it, though its headline names the company.
Where the directory comes from
The directory is compiled from SEC filings, Wikidata (CC0), stock-index membership and the S&P 500 constituents; it uses no Fortune or CompaniesMarketCap data. The service stores company names only: no list’s rank, order or revenue figure.
Publishers
GET/api/v1/publishers
Every newsroom and newswire we collect from, with how many releases it has, when its latest one came out and the languages it publishes in.
It takes no parameters.
curl "https://pressreleasefeed.org/api/v1/publishers"{
"data": [
{
"slug": "apple",
"name": "Apple",
"kind": "brand",
"homepage_url": "https://www.apple.com/newsroom/",
"releases": 1290,
"latest_published_at": "2026-10-12T13:59:49.000Z",
"languages": ["en"]
}
],
"meta": { "total": 41, "generated_at": "…" }
}Topics
GET/api/v1/topics
The 12 topics, each with its number of releases.
Topics come from keyword rules shared with pressreleasedatabase.com; most non-English releases carry none.
finance- Finance
crypto- Crypto
ai- AI
saas- SaaS
healthcare- Healthcare
real-estate- Real estate
energy- Energy
retail- Retail
automotive- Automotive
gaming- Gaming
media- Media
education- Education
It takes no parameters.
curl "https://pressreleasefeed.org/api/v1/topics"{
"data": [{ "slug": "ai", "name": "AI", "releases": 512 }],
"meta": { "total": 12, "generated_at": "…" }
}Companies
GET/api/v1/companies
Every company in the directory, ordered by name, with its country, region, niches and home language. A company that no release is linked to yet is listed too. The list is not paged.
| Parameter | Values | Meaning |
|---|---|---|
region | asia | A region slug from /api/v1/regions. |
country | JP | An ISO 3166-1 alpha-2 code, in any case. |
niche | automotive | A niche slug from /api/v1/niches. |
language | ja | An ISO 639-1 code: the company’s home language. |
Every parameter given must match the same company, and an unknown value is a 400. A valid combination that no company satisfies returns 200 with "data": [].
curl "https://pressreleasefeed.org/api/v1/companies?region=asia&niche=automotive"{
"data": [
{
"slug": "toyota",
"name": "Toyota",
"country": "JP",
"region": "asia",
"niches": ["automotive"],
"language": "ja"
}
],
"meta": {
"total": 1,
"filters": {
"region": "asia",
"country": null,
"niche": "automotive",
"language": null
},
"generated_at": "…"
}
}Countries and niches
- A company’s country is where it is run from: Medtronic, Eaton and Chubb are US companies, and Hong Kong is its own country.
- A company has one to three niches.
Niches
GET/api/v1/niches
All 30 niches, each with the number of companies in it (company_count, 0 for an empty niche).
aerospace-defense- Aerospace & Defense
apparel-luxury- Apparel & Luxury
automotive- Automotive
banking- Banking
business-services- Business Services
chemicals-materials- Chemicals & Materials
conglomerates- Conglomerates
construction-engineering- Construction & Engineering
consumer-electronics- Consumer Electronics
consumer-goods- Consumer Goods
ecommerce-internet- E-commerce & Internet
oil-gas- Energy: Oil & Gas
financial-services- Financial Services
food-beverages- Food & Beverages
healthcare-services- Healthcare Services
industrial-machinery- Industrial Machinery
insurance- Insurance
logistics-transportation- Logistics & Transportation
media-entertainment- Media & Entertainment
medical-devices- Medical Devices
metals-mining- Metals & Mining
pharma-biotech- Pharmaceuticals & Biotech
real-estate- Real Estate
retail- Retail
semiconductors- Semiconductors
software-it- Software & IT Services
telecommunications- Telecommunications
travel-hospitality- Travel & Hospitality
utilities-renewables- Utilities & Renewables
wholesale-distribution- Wholesale & Distribution
It takes no parameters.
curl "https://pressreleasefeed.org/api/v1/niches"{
"data": [
{
"slug": "automotive",
"name": "Automotive",
"company_count": 41
}
],
"meta": { "total": 30, "generated_at": "…" }
}Regions
GET/api/v1/regions
The seven regions, each with the countries that have at least one company, sorted by name.
north-america- North America
latin-america- Latin America
europe- Europe
middle-east- Middle East
africa- Africa
asia- Asia
oceania- Oceania
It takes no parameters.
curl "https://pressreleasefeed.org/api/v1/regions"{
"data": [
{
"slug": "asia",
"name": "Asia",
"countries": [{ "code": "JP", "name": "Japan", "company_count": 118 }]
}
],
"meta": { "total": 7, "generated_at": "…" }
}Which countries are where
- North America is the US, Canada and Bermuda (with Greenland and Saint Pierre and Miquelon).
- Latin America is Mexico, Central and South America and the Caribbean.
- The Middle East is the Gulf states, Iran, Iraq, Israel, Jordan and Lebanon (with Palestine, Syria and Yemen).
- Turkey, Russia and the Caucasus count as Europe, and Egypt counts as Africa.
RSS
GET/feed.xml
RSS 2.0 with the same filters as /api/v1/releases, plus limit in place of paging. A feed link works in any feed reader.
| Parameter | Values | Meaning |
|---|---|---|
limit | 1 to 100 | How many items, newest first; 50 by default. |
key | Your API key | Adds each item’s full text in <content:encoded>. Only the feed takes a key in its URL, for feed readers that cannot send headers. Treat such a URL as a secret. |
It takes every Releases filter too, with the same values and rules:
publishertopiclanguagekindcompaniescompanyregioncountrynichecompany_languageqsinceuntil
https://pressreleasefeed.org/feed.xml?topic=finance
https://pressreleasefeed.org/feed.xml?publisher=apple,microsoft&language=en
https://pressreleasefeed.org/feed.xml?companies=largest&language=en
https://pressreleasefeed.org/feed.xml?company=toyota
https://pressreleasefeed.org/feed.xml?region=asia&niche=automotivecurl "https://pressreleasefeed.org/feed.xml?topic=finance"<channel>
<title>Press Release Feed — Finance</title>
<link>https://pressreleasefeed.org</link>
<item>
<title>…</title>
<link>https://www.apple.com/newsroom/…</link>
<guid isPermaLink="false">9f91ab84-4ade-49d1-b9ae-be5c1a216e38</guid>
<pubDate>Mon, 12 Oct 2026 13:59:49 GMT</pubDate>
<dc:creator>Apple</dc:creator>
<category>finance</category>
<category>Apple Inc.</category>
<description>…</description>
</item>
</channel>What each item carries
<dc:creator>is the issuing company (a newsroom’s own name for company newsrooms). A wire release without a detected issuer has no<dc:creator>.- Each linked company gets one
<category>, holding the company’s name, after the topic categories. companies=largestand the company filters work here too, with the same-company rule.- Errors on
/feed.xml, such as an invalid parameter, come back as JSON, like the rest of the API.
Caching and limits
| Answer | Cached for |
|---|---|
| Release lists and single releases | 60 seconds |
| Publishers, topics, companies, niches, regions and RSS | 5 minutes |
| Anything with full text | Never |
- Please poll a feed no more often than every few minutes.
- A page holds at most 100 releases (
per_page) and paging stops at page 500. A feed holds at most 100 items (limit), and a query string may be up to 2,048 characters long.
Errors
An error comes back with its status code and a JSON body that says what went wrong: { "error": "message" }.
| Status | Meaning |
|---|---|
| 400 | A parameter is invalid (for example a companies value other than largest, or an unknown company, region, country, niche or company_language), a keyword search is too broad to finish in time, or a JSON endpoint received ?key=. The message says which. |
| 401 | Unknown API key. |
| 403 | Revoked API key. |
| 404 | Unknown path or release. |
| 414 | Query string longer than 2,048 characters. |
| 503 | Temporarily unavailable: retry shortly. |
curl "https://pressreleasefeed.org/api/v1/releases?company=acme"{ "error": "Unknown company: acme" }