Skip to content

List articles as an RSS feed

GET
/articles.rss
curl --request GET \
--url 'https://api.presscloud.ai/v1/articles.rss?q=overname&search=keyword&search_in=title&country=NL&country=BE&language=nl&has_author=true&published_after=2026-01-01&published_before=2026-03-01&ingested_after=2026-08-20T07%3A44%3A12Z&sort=published_at&order=asc&per_page=25' \
--header 'Authorization: Bearer <token>'

The same query as GET /articles, rendered as RSS 2.0. Same filters, same entitlement checks, same rows.

Adds two namespaced elements (pc:outlet, pc:country) under https://presscloud.ai/ns/news. There is no cursor — for a full walk, use the JSON endpoint.

q
string
<= 191 characters

The search term. Required, and at least 2 characters, when search=semantic.

Example
overname
search
string
default: keyword
Allowed values: keyword boolean semantic

How q is matched.

keyword (default) matches as natural language. boolean applies an explicit grammar: every word required, "quoted phrases", and a leading - excludes. semantic matches by meaning: up to 500 of the closest matches are identified, the remaining filters are applied to those, and results are ordered by relevance with a relevance field on each article. Combining semantic search with a narrow filter may return fewer results than the equivalent keyword or boolean search.

search_in
string
default: title
Allowed values: title title_body

Whether q is matched against the headline only (title, default) or the headline and article text (title_body). Applies to keyword and boolean search; combining it with search=semantic returns 422.

country
Array<string>
Allowed values: NL BE LU

Country of the publishing outlet. Repeatable, and a comma-separated list is also accepted (country=NL,BE).

Example
[
"NL",
"BE"
]
language
Array<string>
Allowed values: nl fr de lb en

Repeatable, and a comma-separated list is also accepted.

Example
[
"nl"
]
has_author
boolean

Restrict to articles that carry a by-line. Accepts true, false, yes, no, 1 and 0. Omitting the parameter means either.

Example
true
outlet
string
<= 191 characters

Matches the outlet name or domain.

author
string
<= 191 characters

Matches the author name as the outlet published it.

published_after
string format: date

Inclusive lower bound. With no value, the plan’s own history window applies.

Example
2026-01-01
published_before
string format: date

Inclusive upper bound, covering the whole day named. Must be on or after published_after. A value carrying its own time is honoured exactly.

Example
2026-03-01
ingested_after
string format: date-time

Inclusive lower bound on the time the article entered the index. Use with sort=ingested_at&order=asc to poll for new articles without missing late arrivals.

Example
2026-08-20T07:44:12Z
sort
string
Allowed values: published_at ingested_at relevance

Sort field. Defaults to published_at, or relevance for semantic search. relevance is only valid with search=semantic. ingested_at excludes articles without an ingestion time.

order
string
default: desc
Allowed values: asc desc

Sort direction.

per_page
integer
default: 25 >= 1 <= 100

Articles per page.

An RSS 2.0 feed. Adds pc:relevance per item on search=semantic.

Media typeapplication/rss+xml
string

missing_token or invalid_token.

Media typeapplication/json

Error response. Use code for error handling; message is descriptive and may change.

object
status
required
string
Allowed value: error
code
required
string
Allowed values: missing_token invalid_token too_many_failed_attempts country_not_included history_not_included invalid_request rate_limit_exceeded quota_exceeded semantic_search_unavailable
message
required
string
errors

Per-parameter validation messages. Only present on invalid_request.

object
key
additional properties
Array<string>
Example
{
"status": "error",
"code": "invalid_token",
"message": "This API key is not valid."
}

A filter outside the plan: country_not_included or history_not_included.

Media typeapplication/json

Error response. Use code for error handling; message is descriptive and may change.

object
status
required
string
Allowed value: error
code
required
string
Allowed values: missing_token invalid_token too_many_failed_attempts country_not_included history_not_included invalid_request rate_limit_exceeded quota_exceeded semantic_search_unavailable
message
required
string
errors

Per-parameter validation messages. Only present on invalid_request.

object
key
additional properties
Array<string>
Example
{
"status": "error",
"code": "country_not_included",
"message": "This plan does not include coverage for BE."
}

invalid_request. Carries per-parameter messages.

Media typeapplication/json

Error response. Use code for error handling; message is descriptive and may change.

object
status
required
string
Allowed value: error
code
required
string
Allowed values: missing_token invalid_token too_many_failed_attempts country_not_included history_not_included invalid_request rate_limit_exceeded quota_exceeded semantic_search_unavailable
message
required
string
errors

Per-parameter validation messages. Only present on invalid_request.

object
key
additional properties
Array<string>
Example
{
"status": "error",
"code": "invalid_request",
"message": "One or more query parameters are not valid.",
"errors": {
"per_page": [
"The per page field must not be greater than 100."
]
}
}

rate_limit_exceeded, quota_exceeded or too_many_failed_attempts. Distinguish by code.

Media typeapplication/json

Error response. Use code for error handling; message is descriptive and may change.

object
status
required
string
Allowed value: error
code
required
string
Allowed values: missing_token invalid_token too_many_failed_attempts country_not_included history_not_included invalid_request rate_limit_exceeded quota_exceeded semantic_search_unavailable
message
required
string
errors

Per-parameter validation messages. Only present on invalid_request.

object
key
additional properties
Array<string>
Example
{
"status": "error",
"code": "rate_limit_exceeded",
"message": "Too many requests. Slow down and retry after the interval in the Retry-After header."
}
Retry-After
integer

Seconds to wait before retrying.

semantic_search_unavailable. Semantic search is temporarily unavailable. Retry after a short delay, or repeat the request with search=keyword.

Media typeapplication/json

Error response. Use code for error handling; message is descriptive and may change.

object
status
required
string
Allowed value: error
code
required
string
Allowed values: missing_token invalid_token too_many_failed_attempts country_not_included history_not_included invalid_request rate_limit_exceeded quota_exceeded semantic_search_unavailable
message
required
string
errors

Per-parameter validation messages. Only present on invalid_request.

object
key
additional properties
Array<string>
Example
{
"status": "error",
"code": "semantic_search_unavailable",
"message": "Semantic search is temporarily unavailable. Retry shortly, or repeat the request with search=keyword."
}