The news API that returns structured data
- 150,000+
- Publishers
- 1M+
- Articles daily
- 50+
- Languages
- 2014
- Archive since
EU regulators open a consultation on the AI Act implementation timeline
- body
- The European Commission opened a six-week consultation on how quickly the bloc’s AI Act obligations should…
- concepts
- European Commission Brussels Artificial intelligence +21
- categories
- Law & Government › Legislation Technology +5
- sentiment
- positive +0.34
- event
- 148 articles · 17 languages
- isDuplicate
- false
800+ companies and institutions rely on NewsAPI.ai
Pick a query, see the response
from eventregistry import *MAX_RESULTS = 1000er = EventRegistry(apiKey = YOUR_API_KEY)iter = QueryArticlesIter(keywords = QueryItems.OR(["Bitcoin", "Ethereum", "Litecoin"]),lang = "eng")for art in iter.execQuery(er,sortBy = "date",maxItems = MAX_RESULTS,returnInfo = ReturnInfo(articleInfo = ArticleInfoFlags(concepts = True,categories = True))):# do something with the articleprint(art)
from eventregistry import *MAX_RESULTS = 1000er = EventRegistry(apiKey = YOUR_API_KEY)iter = QueryEventsIter(categoryUri = er.getCategoryUri("natural disasters"),locationUri = er.getLocationUri("United States"))for event in iter.execQuery(er, maxItems = MAX_RESULTS):# do something with the eventprint(event)
from eventregistry import *MAX_RESULTS = 1000er = EventRegistry(apiKey = YOUR_API_KEY)iter = QueryArticlesIter(conceptUri = er.getConceptUri("Apple"),sourceGroupUri = er.getSourceGroupUri("business top100"))for art in iter.execQuery(er,sortBy = "rel",maxItems = MAX_RESULTS):# do something with the articleprint(art)
from eventregistry import *MAX_RESULTS = 1000er = EventRegistry(apiKey = YOUR_API_KEY)iter = QueryArticlesIter(conceptUri = er.getConceptUri("football"),lang = QueryItems.OR(["deu", "spa"]))for art in iter.execQuery(er,sortBy = "socialScore",maxItems = MAX_RESULTS,returnInfo = ReturnInfo(articleInfo = ArticleInfoFlags(socialScore = True,concepts = True,categories = True))):# do something with the articleprint(art)
from eventregistry import *MAX_RESULTS = 1000er = EventRegistry(apiKey = YOUR_API_KEY)iter = QueryArticlesIter(conceptUri = er.getConceptUri("refugee"),sourceLocationUri = er.getLocationUri("Germany"),lang = QueryItems.OR(["deu", "spa"]))for art in iter.execQuery(er,sortBy = "sourceAlexaGlobalRank",sortByAsc = True,maxItems = MAX_RESULTS):# do something with the articleprint(art)
var request = require('request');request.get({url: "/api/v1/article/getArticles",qs: {resultType: "articles",keyword: ["Bitcoin","Ethereum","Litecoin"],keywordOper: "or",lang: "eng",articlesSortBy: "date",includeArticleConcepts: true,includeArticleCategories: true,apiKey: "API_KEY",},function(error, response, body) {body = JSON.parse(body);console.log(body);});
var request = require('request');request.get({url: "/api/v1/event/getEvents",qs: {resultType: "events",categoryUri: "dmoz/Science/Earth_Sciences/Natural_Disasters_and_Hazards",locationUri: "http://en.wikipedia.org/wiki/United_States",apiKey: "API_KEY",},function(error, response, body) {body = JSON.parse(body);console.log(body);});
var request = require('request');request.get({url: "/api/v1/article/getArticles",qs: {resultType: "articles",conceptUri: "http,sourceGroupUri: "business/top100",articlesSortBy: "rel",apiKey: "API_KEY",},function(error, response, body) {body = JSON.parse(body);console.log(body);});
var request = require('request');request.get({url: "/api/v1/article/getArticles",qs: {resultType: "articles",conceptUri: "http,lang: ["deu","spa"],articlesSortBy: "socialScore",includeArticleSocialScore: "true",includeArticleConcepts: true,includeArticleCategories: true,apiKey: "API_KEY",},function(error, response, body) {body = JSON.parse(body);console.log(body);});
var request = require('request');request.get({url: "/api/v1/article/getArticles",qs: {resultType: "articles",conceptUri: "http://en.wikipedia.org/wiki/Refugee"sourceLocationUri: "http://en.wikipedia.org/wiki/Germany"articlesSortBy: "sourceAlexaGlobalRank",articlesSortByAsc: "true",apiKey: "API_KEY",},},function(error, response, body) {body = JSON.parse(body);console.log(body);});
https://eventregistry.org/api/v1/article/getArticles?resultType=articles&keyword=Bitcoin&keyword=Ethereum&keyword=Litecoin&keywordOper=or&lang=eng&articlesSortBy=date&includeArticleConcepts=true&includeArticleCategories=true&apiKey=API_KEY
https://eventregistry.org/api/v1/event/getEvents?resultType=events&categoryUri=dmoz/Science/Earth_Sciences/Natural_Disasters_and_Hazards&locationUri=http://en.wikipedia.org/wiki/United_States&apiKey=API_KEY
https://eventregistry.org/api/v1/article/getArticles?resultType=articles&conceptUri=http://en.wikipedia.org/wiki/Apple_Inc.&sourceGroupUri=business/top100&articlesSortBy=rel&apiKey=API_KEY
https://eventregistry.org/api/v1/article/getArticles?resultType=articles&conceptUri=http://en.wikipedia.org/wiki/Association_football&lang=deu&lang=spa&articlesSortBy=socialScore&includeArticleConcepts=true&includeArticleCategories=true&apiKey=API_KEY
https://eventregistry.org/api/v1/article/getArticles?resultType=articles&conceptUri=http://en.wikipedia.org/wiki/Refugee&sourceLocationUri=http://en.wikipedia.org/wiki/Germany&articlesSortBy=sourceAlexaGlobalRank&articlesSortByAsc=true&apiKey=API_KEY
curl -G "https://eventregistry.org/api/v1/article/getArticles" \--data-urlencode "resultType=articles" \--data-urlencode "keyword=Bitcoin" \--data-urlencode "keyword=Ethereum" \--data-urlencode "keyword=Litecoin" \--data-urlencode "keywordOper=or" \--data-urlencode "lang=eng" \--data-urlencode "articlesSortBy=date" \--data-urlencode "includeArticleConcepts=true" \--data-urlencode "includeArticleCategories=true" \--data-urlencode "apiKey=API_KEY"
curl -G "https://eventregistry.org/api/v1/event/getEvents" \--data-urlencode "resultType=events" \--data-urlencode "categoryUri=dmoz/Science/Earth_Sciences/Natural_Disasters_and_Hazards" \--data-urlencode "locationUri=http://en.wikipedia.org/wiki/United_States" \--data-urlencode "eventsCount=10" \--data-urlencode "apiKey=API_KEY"
curl -G "https://eventregistry.org/api/v1/article/getArticles" \--data-urlencode "resultType=articles" \--data-urlencode "conceptUri=http://en.wikipedia.org/wiki/Apple_Inc." \--data-urlencode "sourceGroupUri=business/top100" \--data-urlencode "articlesSortBy=rel" \--data-urlencode "apiKey=API_KEY"
curl -G "https://eventregistry.org/api/v1/article/getArticles" \--data-urlencode "resultType=articles" \--data-urlencode "conceptUri=http://en.wikipedia.org/wiki/Association_football" \--data-urlencode "lang=deu" \--data-urlencode "lang=spa" \--data-urlencode "articlesSortBy=socialScore" \--data-urlencode "includeArticleSocialScore=true" \--data-urlencode "includeArticleConcepts=true" \--data-urlencode "includeArticleCategories=true" \--data-urlencode "articleBodyLen=300" \--data-urlencode "articlesCount=10" \--data-urlencode "apiKey=API_KEY"
curl -G "https://eventregistry.org/api/v1/article/getArticles" \--data-urlencode "resultType=articles" \--data-urlencode "conceptUri=http://en.wikipedia.org/wiki/Refugee" \--data-urlencode "sourceLocationUri=http://en.wikipedia.org/wiki/Germany" \--data-urlencode "articlesSortBy=sourceAlexaGlobalRank" \--data-urlencode "articlesSortByAsc=true" \--data-urlencode "apiKey=API_KEY"
Comparison of news API providers
| NewsAPI.ai | Other providers | |
|---|---|---|
| Basic Article Data | ||
| Title, Body, URL, Publication date We extract the title, body of the article, URL, and the publication date.
|
|
|
| Authors We extract the information about the author(s) of the article.
|
|
|
| Links from the body We extract the URLs and the anchor text for the links that are provided in the body of the article.
|
|
|
| Videos shown in the body We extract the URLs to the videos that are linked inside the body of the article.
|
|
|
| Enriched Article Data | ||
| Entity recognition and disambiguation We identify and disambiguate the list of people, organizations, locations, and other important concepts mentioned in the article text.
|
|
|
| Categorization We compute what are the topics discussed in the text. The article can be associated with one or more topics from a predefined taxonomy of 5000+ topics.
|
|
|
| Article clustering (events) We group the articles into events based on the similarity of their content. Events allow us to identify additional articles addressing identical topics or occurrences.
|
|
|
| Sentiment We compute what is the sentiment of the text in the article.
|
|
|
| Social media score We monitor how many times each of the articles is shared on social media.
|
|
|
| (Near) Duplicate detection Articles can be copied or nearly copied by multiple sources. We mark if an article is new or a copy of some previously published article.
|
|
|
| Publisher ranking For each source we provide additional meta-data such as location and the ranking according to the number of monthly viewers.
|
|
|
| Support | ||
| Tech support via chat, email and Zoom We are happy to help our clients to get onboard as easily as possible. We provide support over chat, email and video conferences.
|
|
|
Global content
Access news content published by global news sources in 50+ languages just minutes after it has been published online.
Advanced filtering
Find news content of interest by specifying keywords, people, locations, organizations, topics, news sources, sentiment and more.
Meta-data information
Obtain all available article information as well as mentioned entities, sentiment, topics, shares on social media and more.
Track world's events
Search world events identified in the news. See coverage of each event by different publishers and in different languages.
Pay per use
Use our News API with a simple pay as you go monthly subscription. Upgrade or downgrade your plan at any time.
News archive
Get access to historical news content published since 2014 by accessing our news database.
The News API pipeline
Bring structured news research into your AI assistant
- Research articles and events. Find relevant reporting and explore related coverage of the same development.
- Find reported actions. Research acquisitions, layoffs, launches and recalls. Mention search requires event-type access on your account.
- Measure news coverage. Explore article counts over time, coverage by publisher and sentiment distributions.
Connect through the hosted server
Add this URL in your assistant’s MCP or connector settings, then sign in with your NewsAPI.ai account:
https://mcp.newsapi.ai/mcp
Works with
Claude
Cursor
Codex
VS Code
Antigravity
Requires a compatible client with remote MCP and OAuth support. Searches and article lookups use API tokens from your NewsAPI.ai account.
Start with a question
“Use NewsAPI.ai to research NVIDIA over the last seven days. Give me five key developments, group repeated coverage and link to the supporting articles.”
Optional research skills for Claude: Add guided workflows for news, due diligence, risk, markets, political research and source analysis. Explore research skills →