OrbTop

PMG Banknote Price Guide Scraper

ECOMMERCE

PMG Banknote Price Guide Scraper

Scrapes the PMG (Paper Money Guaranty) World Banknote Price Guide — the canonical graded-banknote valuation reference for collectors and dealers. Extracts one dataset row per (note, PMG grade) pair, covering up to 8 grade columns (G4 through MS63) across 306 countries.

What it scrapes

The PMG price guide publishes USD market values for world paper money graded by PMG. Each record in the output corresponds to a single note at a single PMG grade and includes:

  • Country, issuer, series, and denomination
  • SCWPM Pick catalog number and Friedberg number (where present)
  • PMG grade label, numeric grade, and quality designation (EPQ, Net, Star, etc.)
  • USD price as listed in the guide
  • Obverse image URL and direct link to the price-guide detail page

Output fields

Field Type Description
note_id string PMG internal note ID (stable across runs)
source_url string URL of the price-guide detail page
region string Always "world" for this guide
country string Country name (e.g. Afghanistan, Canada)
issuer string Issuing authority
series string Note series or set name
denomination string Face denomination with currency unit
issue_year integer Year of issue
pick_number string SCWPM Pick catalog number
friedberg_number string Friedberg catalog number (US-standard, where available)
variety string Variety designation (where present)
pmg_grade string Full PMG grade label (e.g. 64 EPQ, 58 Net)
grade_numeric number Numeric portion of the grade
designation string Quality designation — EPQ, Net, Star, etc.
price_usd number USD price as shown in the guide
price_as_of string Price date or label as shown on the page
image_url string Obverse image URL for this note

Input options

Option Type Default Description
maxItems integer 10 Maximum grade-price records to collect (0 = unlimited)
country string (blank) Filter to a single country by name (e.g. "Canada"). Leave blank to scrape all 306 countries.

How it works

The PMG price guide uses a 3-level ASPX cascade (Country → Issuer → Denomination) that gates all data behind sequential form submissions. This actor:

  1. Loads the index page — extracts 306 country options and ASPX form tokens
  2. Posts per country — retrieves the issuer list for that country
  3. Posts per issuer — retrieves the denomination list
  4. Posts per denomination — submits the search form and collects the note ID (deid) values from the results grid
  5. Fetches per note — GETs each detail page (/priceguide/world-note-prices.aspx?deid=N), parses the 8-column grade/price table, and emits one record per non-null grade price

Denomination-level filtering keeps each search result well under the 25-row page limit, so no pagination handling is required.

Performance and limits

  • Memory: 512 MB
  • Timeout: 4 hours (for full 306-country runs)
  • Concurrency: 8 parallel detail-page fetches; cascade steps are serial
  • Proxy: None required — the site is accessible from datacenter IPs without challenge

Usage tips

  • For a quick test, set country to "Afghanistan" and maxItems to 10.
  • For a full dataset run, leave country blank and set maxItems to 0. Expect a multi-hour run and roughly 50,000–200,000 records depending on how many grades are populated per note.
  • The note_id field is stable across runs and can be used as a deduplication key.