List articles as an RSS feed
const 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';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”The search term. Required, and at least 2 characters, when search=semantic.
Example
overnameHow 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.
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 of the publishing outlet. Repeatable, and a comma-separated list is also accepted (country=NL,BE).
Example
[ "NL", "BE"]Repeatable, and a comma-separated list is also accepted.
Example
[ "nl"]Restrict to articles that carry a by-line. Accepts true, false, yes, no, 1 and 0. Omitting the parameter means either.
Example
trueMatches the outlet name or domain.
Matches the author name as the outlet published it.
Inclusive lower bound. With no value, the plan’s own history window applies.
Example
2026-01-01Inclusive 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-01Inclusive 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:12ZSort 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.
Sort direction.
Articles per page.
Responses
Section titled “Responses”An RSS 2.0 feed. Adds pc:relevance per item on search=semantic.
missing_token or invalid_token.
Error response. Use code for error handling; message is descriptive and may change.
object
Per-parameter validation messages. Only present on invalid_request.
object
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.
Error response. Use code for error handling; message is descriptive and may change.
object
Per-parameter validation messages. Only present on invalid_request.
object
Example
{ "status": "error", "code": "country_not_included", "message": "This plan does not include coverage for BE."}invalid_request. Carries per-parameter messages.
Error response. Use code for error handling; message is descriptive and may change.
object
Per-parameter validation messages. Only present on invalid_request.
object
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.
Error response. Use code for error handling; message is descriptive and may change.
object
Per-parameter validation messages. Only present on invalid_request.
object
Example
{ "status": "error", "code": "rate_limit_exceeded", "message": "Too many requests. Slow down and retry after the interval in the Retry-After header."}Headers
Section titled “Headers”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.
Error response. Use code for error handling; message is descriptive and may change.
object
Per-parameter validation messages. Only present on invalid_request.
object
Example
{ "status": "error", "code": "semantic_search_unavailable", "message": "Semantic search is temporarily unavailable. Retry shortly, or repeat the request with search=keyword."}