MarketAux News API
Financial and market news feeds, similar-article lookup, and article retrieval by UUID.
Financial and market news feeds, similar-article lookup, and article retrieval by UUID.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/marketaux-news-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Marketaux News API
description: Global financial and stock market news API. Generate news feeds filtered by entity symbol, type, exchange, industry, country and more, with per-entity sentiment and match scores. Covers 5,000+ news sources globally in 30+ languages, tracking 200,000+ entities across 80+ markets. Also provides entity statistics (time series and aggregations) and trending-entity endpoints for charting the best and worst performing entities in the news.
version: v1
termsOfService: https://www.marketaux.com/tos
contact:
url: https://www.marketaux.com/contact
servers:
- url: https://api.marketaux.com
security:
- apiToken: []
tags:
- name: News
description: Financial and market news feeds, similar-article lookup, and article retrieval by UUID.
paths:
/v1/news/all:
get:
operationId: getAllNews
tags:
- News
summary: Finance and market news
description: Get all the latest global financial news and filter by entities identified within articles to build concise news feeds. Also provided is analysis of each entity identified in articles. Not every article may have entities identified; use must_have_entities or entity parameters such as symbols or exchanges for more concise results. Available on all plans.
parameters:
- $ref: '#/components/parameters/symbols'
- $ref: '#/components/parameters/entityTypes'
- $ref: '#/components/parameters/industries'
- $ref: '#/components/parameters/countries'
- $ref: '#/components/parameters/sentimentGte'
- $ref: '#/components/parameters/sentimentLte'
- name: min_match_score
in: query
description: Find all articles with entities with a match_score greater than or equal to min_match_score.
schema:
type: number
- $ref: '#/components/parameters/filterEntities'
- $ref: '#/components/parameters/mustHaveEntities'
- $ref: '#/components/parameters/groupSimilar'
- $ref: '#/components/parameters/search'
- $ref: '#/components/parameters/domains'
- $ref: '#/components/parameters/excludeDomains'
- $ref: '#/components/parameters/sourceIds'
- $ref: '#/components/parameters/excludeSourceIds'
- $ref: '#/components/parameters/language'
- $ref: '#/components/parameters/publishedBefore'
- $ref: '#/components/parameters/publishedAfter'
- $ref: '#/components/parameters/publishedOn'
- name: sort
in: query
description: Sort by published_on, entity_match_score, entity_sentiment_score or relevance_score (relevance_score only available when used in conjunction with search). Default is published_at unless search is used, in which case relevance_score is used.
schema:
type: string
enum:
- published_on
- entity_match_score
- entity_sentiment_score
- relevance_score
- name: sort_order
in: query
description: Sort order of the sort parameter. Can only be used with sort = entity_match_score or entity_sentiment_score. Default desc.
schema:
type: string
enum:
- desc
- asc
default: desc
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/page'
responses:
'200':
description: News articles matching the query, with identified entities and sentiment analysis.
content:
application/json:
schema:
type: object
properties:
meta:
$ref: '#/components/schemas/PaginationMeta'
data:
type: array
items:
$ref: '#/components/schemas/NewsArticle'
'400':
$ref: '#/components/responses/MalformedParameters'
'401':
$ref: '#/components/responses/InvalidApiToken'
'402':
$ref: '#/components/responses/UsageLimitReached'
'429':
$ref: '#/components/responses/RateLimitReached'
'500':
$ref: '#/components/responses/ServerError'
'503':
$ref: '#/components/responses/MaintenanceMode'
/v1/news/similar/{uuid}:
get:
operationId: getSimilarNews
tags:
- News
summary: Similar news
description: Find similar stories to a specific article based on its UUID. Available on all plans.
parameters:
- $ref: '#/components/parameters/uuidPath'
- $ref: '#/components/parameters/symbols'
- $ref: '#/components/parameters/entityTypes'
- $ref: '#/components/parameters/industries'
- $ref: '#/components/parameters/countries'
- $ref: '#/components/parameters/sentimentGte'
- $ref: '#/components/parameters/sentimentLte'
- $ref: '#/components/parameters/filterEntities'
- $ref: '#/components/parameters/mustHaveEntities'
- $ref: '#/components/parameters/groupSimilar'
- $ref: '#/components/parameters/domains'
- $ref: '#/components/parameters/excludeDomains'
- $ref: '#/components/parameters/sourceIds'
- $ref: '#/components/parameters/excludeSourceIds'
- $ref: '#/components/parameters/language'
- $ref: '#/components/parameters/publishedBefore'
- $ref: '#/components/parameters/publishedAfter'
- $ref: '#/components/parameters/publishedOn'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/page'
responses:
'200':
description: Articles similar to the referenced article, ranked by relevance_score.
content:
application/json:
schema:
type: object
properties:
meta:
$ref: '#/components/schemas/PaginationMeta'
data:
type: array
items:
$ref: '#/components/schemas/NewsArticle'
'400':
$ref: '#/components/responses/MalformedParameters'
'401':
$ref: '#/components/responses/InvalidApiToken'
'402':
$ref: '#/components/responses/UsageLimitReached'
'404':
$ref: '#/components/responses/ResourceNotFound'
'429':
$ref: '#/components/responses/RateLimitReached'
'500':
$ref: '#/components/responses/ServerError'
'503':
$ref: '#/components/responses/MaintenanceMode'
/v1/news/uuid/{uuid}:
get:
operationId: getNewsByUuid
tags:
- News
summary: News by UUID
description: Find a specific article by the UUID returned by the search endpoints. Useful for storing the UUID and returning the article later. Available on all plans.
parameters:
- $ref: '#/components/parameters/uuidPath'
responses:
'200':
description: The requested news article.
content:
application/json:
schema:
$ref: '#/components/schemas/NewsArticle'
'401':
$ref: '#/components/responses/InvalidApiToken'
'402':
$ref: '#/components/responses/UsageLimitReached'
'404':
$ref: '#/components/responses/ResourceNotFound'
'429':
$ref: '#/components/responses/RateLimitReached'
'500':
$ref: '#/components/responses/ServerError'
'503':
$ref: '#/components/responses/MaintenanceMode'
components:
parameters:
entityTypes:
name: entity_types
in: query
description: 'Specify the type of entities identified within the article. Comma separated. Example: entity_types=index,equity'
schema:
type: string
publishedBefore:
name: published_before
in: query
description: 'Find all articles published before the specified date. Supported formats: Y-m-d\TH:i:s | Y-m-d\TH:i | Y-m-d\TH | Y-m-d | Y-m | Y. All dates are UTC.'
schema:
type: string
search:
name: search
in: query
description: 'Full-text search over article body and title. Supports advanced query syntax: + (AND), | (OR), - (negate), quotes (phrase), * (prefix), parentheses (precedence); escape literals with a backslash. Example: "ipo" -nyse'
schema:
type: string
excludeDomains:
name: exclude_domains
in: query
description: Comma separated list of domains to exclude.
schema:
type: string
sentimentLte:
name: sentiment_lte
in: query
description: Find all articles with entities with a sentiment_score less than or equal to x.
schema:
type: number
minimum: -1
maximum: 1
industries:
name: industries
in: query
description: 'Specify the industries of entities identified within the article. Comma separated. Example: industries=Technology,Industrials'
schema:
type: string
publishedAfter:
name: published_after
in: query
description: 'Find all articles published after the specified date. Supported formats: Y-m-d\TH:i:s | Y-m-d\TH:i | Y-m-d\TH | Y-m-d | Y-m | Y. All dates are UTC.'
schema:
type: string
domains:
name: domains
in: query
description: 'Comma separated list of domains to include. Obtain domains from the sources endpoint. Example: adweek.com,adage.com'
schema:
type: string
sourceIds:
name: source_ids
in: query
description: 'Comma separated list of source_ids to include. Obtain source_ids from the sources endpoint. Example: adweek.com-1,adage.com-1'
schema:
type: string
language:
name: language
in: query
description: 'Comma separated list of languages to include (e.g. en,es). Default is all. Supported languages: ar, bg, bn, cs, da, de, el, en, es, et, fa, fi, fr, he, hi, hr, hu, id, it, ja, ko, lt, multi, nl, no, pl, pt, ro, ru, sk, sv, ta, th, tr, uk, vi, zh.'
schema:
type: string
uuidPath:
name: uuid
in: path
required: true
description: The unique identifier (UUID) for an article, as returned by the search endpoints.
schema:
type: string
format: uuid
mustHaveEntities:
name: must_have_entities
in: query
description: Set to true to ensure that at least one entity has been identified within the article. Default false.
schema:
type: boolean
default: false
excludeSourceIds:
name: exclude_source_ids
in: query
description: Comma separated list of source_ids to exclude.
schema:
type: string
groupSimilar:
name: group_similar
in: query
description: Group similar articles to avoid displaying multiple articles on the same topic/subject. Default true.
schema:
type: boolean
default: true
countries:
name: countries
in: query
description: 'Specify the country of the exchange of which entities have been identified within the article. Comma separated. Example: countries=us,ca'
schema:
type: string
limit:
name: limit
in: query
description: Number of results to return. The maximum limit is based on your plan; the default limit is the maximum specified for your plan.
schema:
type: integer
publishedOn:
name: published_on
in: query
description: 'Find all articles published on the specified date. Supported format: Y-m-d.'
schema:
type: string
sentimentGte:
name: sentiment_gte
in: query
description: Find all articles with entities with a sentiment_score greater than or equal to x. Sentiment is between -1 and +1; 0 = neutral, above 0 = positive, below 0 = negative.
schema:
type: number
minimum: -1
maximum: 1
filterEntities:
name: filter_entities
in: query
description: By default all entities for each article are returned; set to true to return only the entities relevant to your query with each article. Default false.
schema:
type: boolean
default: false
symbols:
name: symbols
in: query
description: 'Specify entity symbol(s) which have been identified within the article. Comma separated. Example: symbols=TSLA,AMZN,MSFT'
schema:
type: string
page:
name: page
in: query
description: Paginate through the result set. Default 1. The max result set cannot exceed 20,000 (e.g. with limit 50 the max page is 400).
schema:
type: integer
default: 1
responses:
UsageLimitReached:
description: 'usage_limit_reached: Usage limit of your plan has been reached. Usage limit and remaining requests can be found on the X-UsageLimit-Limit header.'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
InvalidApiToken:
description: 'invalid_api_token: Invalid API token.'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error:
code: invalid_api_token
message: An invalid API token was supplied.
MalformedParameters:
description: 'malformed_parameters: Validation of parameters failed. The failed parameters are usually shown in the error message.'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
MaintenanceMode:
description: 'maintenance_mode: The service is currently under maintenance.'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
RateLimitReached:
description: 'rate_limit_reached: Too many requests in the past 60 seconds. Rate limit and remaining requests can be found on the X-RateLimit-Limit header.'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
ServerError:
description: 'server_error: A server error occurred.'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
ResourceNotFound:
description: 'resource_not_found: Resource could not be found (also invalid_api_endpoint when the API route does not exist).'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Highlight:
type: object
description: A snippet of article text where an entity was identified.
properties:
highlight:
type: string
description: Snippet of text from the article where the entity has been identified.
sentiment:
type: number
description: The sentiment of the highlighted text.
highlighted_in:
type: string
enum:
- title
- main_text
description: Where the highlight was found.
NewsArticle:
type: object
description: A news article with identified entities and sentiment analysis.
properties:
uuid:
type: string
description: The unique identifier for an article in the Marketaux system.
title:
type: string
description: The article title.
description:
type: string
description: The article meta description.
keywords:
type: string
description: The article meta keywords.
snippet:
type: string
description: A short snippet of the article body.
url:
type: string
description: The URL to the article.
image_url:
type: string
description: The URL to the article image.
language:
type: string
description: The language of the source.
published_at:
type: string
description: The datetime the article was published (UTC).
source:
type: string
description: The domain of the source.
relevance_score:
type:
- number
- 'null'
description: Relevance score based on the search parameter; null when the search parameter is not used.
entities:
type: array
items:
$ref: '#/components/schemas/Entity'
similar:
type: array
description: Array of news articles which are very similar to the main article.
items:
$ref: '#/components/schemas/NewsArticle'
example:
uuid: 70cb577e-c2dd-4dde-b501-f713823a4939
title: Trump wins 2024, markets surge globally
description: Global markets experience a significant surge following Trump's victory in the 2024 election.
keywords: ''
snippet: Donald Trump has won the 2024 presidential election...
url: https://www.killerstartups.com/trump-wins-2024-markets-surge-globally/
image_url: https://images.killerstartups.com/wp-content/uploads/2024/11/Trump-Wins.jpg
language: en
published_at: '2024-11-08T01:24:00.000000Z'
source: killerstartups.com
relevance_score: null
entities:
- symbol: TSLA
name: Tesla, Inc.
exchange: null
exchange_long: null
country: us
type: equity
industry: Consumer Cyclical
match_score: 12.133104
sentiment_score: 0.7783
highlights:
- highlight: ., majority-owned by Trump, and Tesl[+253 characters]
sentiment: 0.7783
highlighted_in: main_text
similar: []
PaginationMeta:
type: object
description: Pagination metadata returned on list endpoints.
properties:
found:
type: integer
description: The number of results found for the request.
returned:
type: integer
description: The number of results returned on the page. If lower than limit, there are no more results after this page.
limit:
type: integer
description: The limit based on the limit parameter.
page:
type: integer
description: The page number based on the page parameter.
Entity:
type: object
description: An entity identified within an article, with match and sentiment scores.
properties:
symbol:
type: string
description: Symbol of the identified entity.
name:
type: string
description: Name of the identified entity.
exchange:
type:
- string
- 'null'
description: Exchange identifier of the identified entity.
exchange_long:
type:
- string
- 'null'
description: Exchange name of the identified entity.
country:
type: string
description: Exchange country of the identified entity.
type:
type: string
description: Type of the identified entity (equity, index, etf, mutualfund, currency, cryptocurrency).
industry:
type: string
description: Industry of the identified entity.
match_score:
type: number
description: The overall strength of the matching for the identified entity.
sentiment_score:
type: number
description: Average sentiment of all highlighted text found for the identified entity.
highlights:
type: array
items:
$ref: '#/components/schemas/Highlight'
Error:
type: object
description: Marketaux error envelope.
properties:
error:
type: object
properties:
code:
type: string
description: Machine-readable error code.
message:
type: string
description: Human-readable error message.
example:
error:
code: malformed_parameters
message: The published_before parameter(s) are incorrectly formatted.
securitySchemes:
apiToken:
type: apiKey
in: query
name: api_token
description: Your API token, found on your account dashboard after signing up at https://www.marketaux.com/register. Passed as a GET parameter on every request.
externalDocs:
description: Marketaux API documentation
url: https://www.marketaux.com/documentation
x-provenance:
generated: '2026-07-22'
method: generated
source: https://www.marketaux.com/documentation
note: Marketaux publishes no machine-readable API definition (probes of www.marketaux.com and api.marketaux.com for /openapi.json, /openapi.yaml, /swagger.json, /v1/openapi.json and /api-docs all returned 404 on 2026-07-22). This OpenAPI was generated faithfully from the published HTML API documentation; every path, parameter, response field, and error code below is documented at the source URL. Example values are taken verbatim from the documentation.