# PMG Notes — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://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.

> Access detailed grading population data for banknotes across different countries, series, and denominations, plus stay updated with the latest news from PMGnotes.com. Search and retrieve comprehensive census information to track banknote rarity, grades, and collecting trends.

**Category:** Finance & Markets | **Website:** [pmgnotes.com/](https://pmgnotes.com/) | **Docs:** [parse.bot/marketplace/c2803963-a9d8-4ec6-80dc-3898bbe11c47/pmgnotes-com-api](https://parse.bot/marketplace/c2803963-a9d8-4ec6-80dc-3898bbe11c47/pmgnotes-com-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-pmgnotes-com-api-c2803963/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### get_news_articles

Retrieve a paginated list of PMG news articles. Returns 10 articles per page with title, teaser, post date, and article URL. Articles date back to 2002.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number for pagination. Page size is fixed at 10. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pmgnotes-com-api-c2803963/get_news_articles \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>"}'
```

### get_population_report_categories

Retrieve the list of categories (regions or eras) for a given country ID. Typically returns a single category per country. The returned PMGResourceCategoryID is used to fetch subcategories.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `country_id` | integer | Yes | Country ID obtained from get_population_report_countries (CCGResourceCountryID field). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pmgnotes-com-api-c2803963/get_population_report_categories \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country_id":"<integer>"}'
```

### get_population_report_countries

Retrieve the top-level list of all countries and regions available in the PMG Population Report. Returns over 200 entries with note census counts and identifiers for drilling into categories. Each country carries a CCGResourceCountryID used to fetch its categories and subcategories.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pmgnotes-com-api-c2803963/get_population_report_countries \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### get_population_report_notes

Retrieve the census/population notes data for a specific subcategory. Returns detailed grade distribution for all notes in the subcategory, with up to 75 items per page. Each item includes complete grading counts across all PMG grade levels.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `issuer` | string | No | Optional issuer filter string. Must match exact internal issuer values used by the site. |
| `page` | integer | No | Page number for pagination. Page size is fixed at 75. |
| `subcategory_id` | integer | Yes | Subcategory ID from get_population_report_subcategories (PMGResourceSubcategoryID field). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pmgnotes-com-api-c2803963/get_population_report_notes \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"issuer":"<string>","page":"<integer>","subcategory_id":"<integer>"}'
```

### get_population_report_subcategories

Retrieve the list of denominations or subcategories for a given country and category. Returns all denominations with their total graded counts. The returned PMGResourceSubcategoryID is used to fetch detailed notes.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `category_id` | integer | Yes | Category ID from get_population_report_categories (PMGResourceCategoryID field). |
| `country_id` | integer | Yes | Country ID from get_population_report_countries (CCGResourceCountryID field). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pmgnotes-com-api-c2803963/get_population_report_subcategories \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"category_id":"<integer>","country_id":"<integer>"}'
```

### search_population_report

Search the PMG Population Report for specific notes using keywords. Returns matching notes with their category, subcategory, and URL path for the population report detail view.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `country_id` | integer | Yes | Country ID to scope the search, from get_population_report_countries (CCGResourceCountryID field). |
| `query` | string | Yes | Search keywords such as denomination name, year, or catalog number. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pmgnotes-com-api-c2803963/search_population_report \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country_id":"<integer>","query":"<string>"}'
```
