# Occrp — Wrapped API

> **You are on:** `https://api.beta.paywithlocus.com/api` | [llms.txt](https://beta.paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Search and discover investigative journalism from OCCRP.org, including articles, investigations, and projects organized by section and region. Get the latest news updates and detailed information about specific investigations to stay informed on organized crime and corruption reporting.

**Category:** News & Media | **Website:** [occrp.org/](https://occrp.org/) | **Docs:** [parse.bot/marketplace/9d52d1e8-5bbd-45fe-b28e-909ba997e1a7/occrp-org-api](https://parse.bot/marketplace/9d52d1e8-5bbd-45fe-b28e-909ba997e1a7/occrp-org-api)

Pay-per-use API proxy for Locus Pro. Each call burns credits from your workspace balance.

## Access

**Base URL:** `https://api.beta.paywithlocus.com/api/wrapped/credits/occrp/`
**Auth:** `Authorization: Bearer <LOCUS_CREDITS_SECRET_KEY>` (an `lcr_` secret key or a scoped `lcac_` agent credential)
**Required header:** `Idempotency-Key: <fresh UUID per call>`. A retry with the same key replays the stored result without a new charge.
**Response:** the provider response after any endpoint-specific normalization. `X-Locus-Credits-Charged` carries the charge and `X-Locus-Credits-Balance` the remaining balance. Insufficient credits return `402` before the provider is called.
**Pricing:** estimated costs below are USD. Locus debits the credit equivalent at your workspace rate.

Full call contract: https://docs.paywithlocus.com/api-reference/introduction

> Using a Pay With Locus wallet key (`claw_` prefix)? Wallet routes are documented separately: https://docs.paywithlocus.com/wrapped-apis/for-agents

## Endpoints

### Get article detail

Fetch and parse the full HTML page of an OCCRP article. Returns structured data including headline, body text, authors, publication date, partner organizations, article type, and tags. Requires the article URL (full or relative path). Each call is a separate HTTP fetch of the article page — use search endpoints to discover article URIs first.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `url` | string | Yes | Full URL or relative path of the article (e.g. https://www.occrp.org/en/investigation/fatal-liver-transplants-in-georgia-were-rush-jobs or /en/investigation/fatal-liver-transplants-in-georgia-were-rush-jobs) |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/occrp/get-article-detail \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"url":"<string>"}'
```

### Get articles by region

Retrieve articles filtered by geographic region. Returns paginated results matching the specified region facet from the Algolia index.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Number of results per page |
| `page` | integer | No | Page number (0-indexed) |
| `region` | string | Yes | Region name to filter by |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/occrp/get-articles-by-region \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"limit":"<integer>","page":"<integer>","region":"<string>"}'
```

### Get articles by section

Retrieve articles filtered by thematic section. Returns paginated results matching the specified section facet from the Algolia index.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Number of results per page |
| `page` | integer | No | Page number (0-indexed) |
| `section` | string | Yes | Section name to filter by |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/occrp/get-articles-by-section \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"limit":"<integer>","page":"<integer>","section":"<string>"}'
```

### Get investigations

Retrieve articles filtered by type 'Investigation'. Returns paginated results containing only in-depth investigative reports.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Number of results per page |
| `page` | integer | No | Page number (0-indexed) |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/occrp/get-investigations \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"limit":"<integer>","page":"<integer>"}'
```

### Get latest articles

Retrieve articles from the default Algolia index ordered by relevance. Returns paginated results without any type or facet filters applied. Useful for discovering recent or highly-ranked content across all categories.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Number of results per page |
| `page` | integer | No | Page number (0-indexed) |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/occrp/get-latest-articles \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"limit":"<integer>","page":"<integer>"}'
```

### Get news

Retrieve articles filtered by type 'News'. Returns paginated results containing only news briefs and reports, excluding investigations and features.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Number of results per page |
| `page` | integer | No | Page number (0-indexed) |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/occrp/get-news \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"limit":"<integer>","page":"<integer>"}'
```

### Get projects

Retrieve a paginated list of investigative projects from the OCCRP projects page. Each project includes title, URL, summary, publication date, and banner image. Projects are multi-article investigative series.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number (1-indexed) |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/occrp/get-projects \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>"}'
```

### Search articles

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.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `article_type` | string | No | Type of article filter |
| `limit` | integer | No | Number of results per page (max 1000) |
| `page` | integer | No | Page number (0-indexed) |
| `query` | string | No | Search keywords to match against article titles and content |
| `region` | string | No | Geographic region filter |
| `section` | string | No | Thematic section filter |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/occrp/search-articles \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"article_type":"<string>","limit":"<integer>","page":"<integer>","query":"<string>","region":"<string>","section":"<string>"}'
```

## Next steps

- [All wrapped API providers](https://beta.paywithlocus.com/wapi/index.md): pick another provider.
- [Find and call tools](https://beta.paywithlocus.com/agent/tools.md): price ceilings, async results, and errors.
- [Credits and billing](https://beta.paywithlocus.com/agent/billing.md): what a call costs and how to add credits.
- [Agent docs index](https://beta.paywithlocus.com/agent/index.md): every Locus agent page.