Discover/OCCRP API
live

OCCRP APIoccrp.org

Access OCCRP investigative journalism via API. Search articles, retrieve investigations, filter by region or section, and fetch full article details including authors and partners.

Endpoint health
verified 3d ago
get_latest_articles
get_articles_by_region
get_investigations
get_projects
search_articles
8/8 passing latest checkself-healing
Endpoints
8
Updated
18d ago

What is the OCCRP API?

The OCCRP API provides 8 endpoints for retrieving articles, investigations, and projects from the Organized Crime and Corruption Reporting Project. Use search_articles to run full-text queries across the entire article index with facet filters, or get_article_detail to fetch a complete article record — including body text, authors, partner organizations, and tags — for any specific URL.

Try it
Page number (0-indexed)
Number of results per page (max 1000)
Search keywords to match against article titles and content
Geographic region filter
Thematic section filter
Type of article filter
api.parse.bot/scraper/c1247c1e-9818-4a07-a48d-e339774986d7/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/c1247c1e-9818-4a07-a48d-e339774986d7/search_articles?page=0&limit=5&query=corruption&region=Asia&section=Corruption&article_type=News' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace occrp-org-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""
OCCRP API – Search investigative journalism, filter by region/section, and read full articles.
"""

from parse_apis.occrp_api import OCCRP, Section, Region, ArticleType, ArticleNotFound

occrp = OCCRP()

# Search for corruption-related articles in Europe
for article in occrp.articles.search(query="corruption", region=Region.EUROPE, limit=5):
    print(article.title, article.date, article.uri)

# List investigations filtered by the Money Laundering section
for article in occrp.articles.list_by_section(section=Section.MONEY_LAUNDERING, limit=3):
    print(article.title, article.type, article.sections)

# Fetch full detail for a specific article
detail = occrp.articledetails.get(url="https://www.occrp.org/en/investigation/fatal-liver-transplants-in-georgia-were-rush-jobs")
print(detail.title, detail.date, detail.authors)

# Browse investigative projects
for project in occrp.projects.list(limit=5):
    print(project.title, project.url, project.date)
All endpoints · 8 totalmissing one? ·

Full-text search over OCCRP articles with optional facet filters. Returns paginated results from the Algolia search index with article metadata including title, description, type, date, regions, sections, organizations, and keywords. Supports filtering by article type, thematic section, and geographic region simultaneously. An empty query returns all articles matching the filters.

Input
ParamTypeDescription
pageintegerPage number (0-indexed)
limitintegerNumber of results per page (max 1000)
querystringSearch keywords to match against article titles and content
regionstringGeographic region filter
sectionstringThematic section filter
article_typestringType of article filter
Response
{
  "type": "object",
  "fields": {
    "hits": "array of article objects with title, uri, type, description, date, date_timestamp, regions, sections, keywords, organizations, people, image",
    "page": "integer, current page number (0-indexed)",
    "nbHits": "integer, total number of matching articles",
    "nbPages": "integer, total number of pages available",
    "hitsPerPage": "integer, results per page"
  },
  "sample": {
    "data": {
      "hits": [
        {
          "uri": "/project/first-bank-first-family/zavala-cape-corruption",
          "date": "Jun 11, 2012",
          "type": "Investigation",
          "title": "Zavala: Cape Corruption",
          "locale": "en",
          "people": [],
          "regions": [],
          "keywords": [],
          "objectID": "entry::891",
          "sections": [
            "Money Laundering"
          ],
          "description": "First Bank loan funds were used in illegal construction on Cape Zavala.",
          "organizations": [],
          "date_timestamp": 1339365600
        }
      ],
      "page": 0,
      "nbHits": 4899,
      "nbPages": 980,
      "hitsPerPage": 5
    },
    "status": "success"
  }
}

About the OCCRP API

Article Discovery and Search

The search_articles endpoint accepts a query string plus optional region, section, and article_type filters and returns paginated hits. Each hit includes title, uri, type, description, date, date_timestamp, regions, sections, keywords, organizations, and people. Results are 0-indexed; use the page parameter alongside nbPages to paginate. get_latest_articles returns the same shape without filters, ordered by relevance rank from the index. Dedicated endpoints get_news and get_investigations narrow results to articles with type News or Investigation respectively, keeping the same pagination contract.

Filtering by Region and Section

get_articles_by_region and get_articles_by_section each require one mandatory parameter (region or section) and return hits matching that facet. The regions and sections fields on each hit reflect how OCCRP classifies its own content, so values like "Eastern Europe" or "Corruption" passed as filter parameters need to match OCCRP's taxonomy exactly. Both endpoints return the same nbHits and nbPages fields for pagination.

Full Article Detail

get_article_detail accepts a full URL or a relative path (e.g. /en/investigation/fatal-liver-transplants-...) and returns a structured record with title, body (full article text), description, date, authors (array of name strings), partners (array of partner organization names), tags, and type. This is the only endpoint that returns body text; the search and list endpoints return summaries only. Each call fetches one article.

Projects

get_projects retrieves multi-article investigative series from the OCCRP projects listing. Each project object includes title, url, summary, date, and image (banner URL). Pagination here is 1-indexed, unlike the article endpoints which use 0-indexed pages.

Reliability & maintenanceVerified

The OCCRP API is a managed, monitored endpoint for occrp.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when occrp.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official occrp.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
3d ago
Latest check
8/8 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Monitor new OCCRP investigations mentioning a specific country using get_articles_by_region with a region parameter
  • Build a corruption-tracking dashboard by polling get_investigations for the latest in-depth investigative reports
  • Extract author and partner organization networks by calling get_article_detail across a set of article URLs
  • Index OCCRP content into an internal search tool using search_articles with keyword and section filters
  • Track multi-article investigative series with get_projects to surface ongoing reporting campaigns
  • Compile keyword and organization metadata from article hits to map relationships across OCCRP's coverage
  • Filter breaking news separately from investigations using get_news to distinguish brief reports from long-form pieces
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does OCCRP offer an official developer API?+
OCCRP does not publish a documented public developer API. Their editorial content is accessible through their website at occrp.org, but there is no official REST or GraphQL API with credentials and documentation available to third-party developers.
What does `get_article_detail` return that the search and list endpoints do not?+
get_article_detail is the only endpoint that returns the full body text of an article. The search and listing endpoints (search_articles, get_investigations, etc.) return only description — a short summary — along with metadata like title, date, regions, and sections. To get the actual article content you need to call get_article_detail with the article's URL.
Are there any quirks to pagination across endpoints?+
Yes. The article search and listing endpoints (search_articles, get_latest_articles, get_news, get_investigations, get_articles_by_section, get_articles_by_region) use 0-indexed pagination — the first page is page=0. The get_projects endpoint uses 1-indexed pagination — the first page is page=1. Mixing these up will cause you to miss the first page of projects or request a non-existent page 0.
Can I retrieve individual journalist profiles or author pages?+
Not currently. The API exposes authors as an array of name strings within get_article_detail results, and organizations and people fields on search hits, but there are no dedicated endpoints for author profiles, bios, or a full list of articles by a specific author. You can fork the API on Parse and revise it to add an author-filtering or profile endpoint.
Does the API cover OCCRP's Aleph document database or leaked dataset indexes?+
Not currently. The API covers published articles, investigations, news briefs, and projects from occrp.org. OCCRP's Aleph platform — which indexes leaked documents and structured entity data — is a separate system and is not included in any endpoint here. You can fork the API on Parse and revise it to add endpoints that query the Aleph search interface.
Page content last updated . Spec covers 8 endpoints from occrp.org.
Related APIs in News MediaSee all →
opencorporates.com API
Access comprehensive company registration data, officer details, and filing histories from OpenCorporates across jurisdictions worldwide to research businesses and their leadership. Search for specific companies or officers, retrieve detailed corporate information, and explore filing records to support due diligence, compliance checks, and business intelligence.
offshoreleaks.icij.org API
Search for entities, individuals, and their financial connections across major offshore leak investigations including the Panama Papers and Pandora Papers. Explore detailed relationship graphs, browse officer records, and analyze bulk datasets to uncover offshore financial activities and networks.
nrk.no API
Access the latest news from Norway's leading broadcaster NRK.no, including front-page stories, category-specific articles, regional news, and breaking news updates through a unified search and browsing interface. Stay informed with full article content, RSS feeds, and real-time news ticker notifications across all major topics.
cornucopia.org API
Access organic food scorecards, brand ratings, research documents, and news from The Cornucopia Institute. Search and filter across dairy, egg, beef, poultry, and other organic product categories.
smashingmagazine.com API
Access Smashing Magazine's library of articles, books, ebooks, newsletters, and events with powerful search and filtering capabilities. Browse by category, discover related content, explore author profiles, and stay updated with the latest design and web development resources.
occ.com.mx API
Search for job listings across OCC.com.mx, Mexico's largest job board, by keyword and location. Retrieve paginated results with titles, companies, salaries, and posting dates, then fetch full listing details including job descriptions, required skills, benefits, and company information.
sneakernews.com API
Browse the latest sneaker news, search articles by keyword, and look up upcoming release dates — including pricing, images, and retailer links. Also surfaces per-page ad slot inventory and density metrics for programmatic and publisher analysis.
ukanimalcrueltyfiles.org API
Access data from ukanimalcrueltyfiles.org.