Goldin Auctions Scraper — Sports Cards, TCG & Sold Comps avatar

Goldin Auctions Scraper — Sports Cards, TCG & Sold Comps

Pricing

from $0.69 / 1,000 lot results

Go to Apify Store
Goldin Auctions Scraper — Sports Cards, TCG & Sold Comps

Goldin Auctions Scraper — Sports Cards, TCG & Sold Comps

Scrape Goldin Auctions for live lots, sold comps, and Fixed Price marketplace. Get hammer price, buyer's premium, bid counts, Weekly/Elite tier, PSA/BGS/SGC grades, and images as JSON — dealers, consignors, and pricing apps.

Pricing

from $0.69 / 1,000 lot results

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

7

Monthly active users

3 days ago

Last modified

Share

Disclaimer: Unofficial tool — not affiliated with, sponsored by, or endorsed by Goldin or eBay or its affiliates. Data is read from publicly accessible pages only. No login. You are responsible for complying with applicable law (including GDPR where personal data appears) and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.

Goldin Auctions scraper for high-end sports cards, TCG / Pokémon, and memorabilia. Pull live lots, sold comps (past auction results), and Fixed Price marketplace listings into JSON — hammer price, buyer's premium, bid counts, Weekly / Elite tier, and PSA / BGS / SGC / CGC grades. Works as a Goldin API alternative via HTTP search (Python / Node.js / MCP) — no headless browser.

Collectibles suite

ActorRole
TCGPlayer Listings ScraperUS TCG seller listings and shops
Cardmarket Listings ScraperEU TCG seller offers and shops
Fanatics Collect ScraperWeekly / Premier auctions, Buy Now, sold comps
Goldin Auctions Scraper ◄── you are hereHigh-end auction live lots & sold comps
Heritage Auctions ScraperHeritage live bids and archive cards
PSA Population Report ScraperSet-level PSA pop census and gem rate
Whatnot Listings ScraperLive-commerce listings and shops
PriceCharting ScraperGuide prices for games, TCG, and comics
eBay Sold Listings ScraperMarketplace completed sales
eBay Active Listings ScraperLive asking prices
eBay Sold Price IntelligenceAggregate comps & pricing stats

Suite next step: after Goldin sold comps, run Fanatics Collect Scraper for weekly-volume hammer on the same titles, then PSA Population Report Scraper for gem rate vs elite price. Volume marketplace still goes to eBay Sold Listings Scraper.

When to use

  • Pull Goldin sold prices from Weekly / Elite auctions to set reserves and consignment floors
  • Monitor live Goldin lots by player, set, or grader (PSA 10, BGS Black Label)
  • Browse Fixed Price / marketplace buy-it-now inventory
  • Resolve specific lot URLs into structured rows for sheets or warehouses
  • Feed apps that need hammer + buyer's premium (true all-in buyer cost)

When not to use: Fanatics Collect weekly volume auctions — use Fanatics Collect Scraper. Low-volume eBay-only comps — use eBay Sold Listings Scraper. Live TCG seller books — use TCGPlayer Listings Scraper or Cardmarket Listings Scraper. Lot-detail fields gated behind login are not scraped.

Key features

  • Four modes — live, sold, marketplace, lot_urls (+ auto)
  • Auction tiers — Weekly, Elite, Thematic, Fixed_Price
  • Sold archive — hundreds of thousands of Completed_Sold comps
  • Buyer's premium aware — buyersPremiumPct + priceWithPremium on every row
  • Grade parsing — PSA / BGS / SGC / CGC / HGA / TAG from titles → label + numeric
  • Title fields — card year, rookie, autograph, and serial (12/99, /99, 1/1) parsed from the lot title. Description text is not in the search response
  • Keyword + filters — sport, category, grader, year range, price range, auction ID
  • Sold-date window — soldAfter / soldBefore on completed lots. This endpoint ignores sort and is not date-ordered, so the Actor keeps scanning up to maxScan
  • HTTP-first — curl_cffi Chrome TLS against Goldin's lots search API; retries when search returns 503; proxy optional

Input

FieldDescription
modelive / sold / marketplace / lot_urls / auto
searchQueriesKeywords (player, set, card). Empty = browse all in mode
startUrlsLot URLs or slugs (lot_urls mode)
auctionTypeAll / Weekly / Elite / Thematic / Fixed_Price
auctionIdOptional parent auction UUID
soldOnlyForce sold archive even outside sold mode
category / categoriesCategory facet; single field and list are combined
sport / sportsSport facet; single field and list are combined
grader / gradersPSA/BGS/… A lot matches any selected grader
gradeGrade substring (e.g. 10, GEM)
minGrade / maxGradeNumeric grade window. Lots with no numeric grade are dropped when either is set
yearMin / yearMaxCard year, sent to Goldin as yearRange
soldAfter / soldBeforeInclusive sale dates (YYYY-MM-DD or 30 days) on sold/completed lots only
rookiesOnly / autographedOnlyTitle flags (Rookie / RC / 1st Bowman / Bowman 1st; Auto / Signed / Signature)
priceMin / priceMaxUSD price window. Sent to Goldin as priceRange with only the sides you set. Positive prices outside the window are dropped. A lot still at $0 (no bids) is kept only when priceMin is empty or 0. That scan counts toward maxScan
maxScanRaw hits scanned per query when a client-side filter is on, including the price window (default 2000)
maxItemsSaved rows (0 = unlimited). Does not cap the raw scan
proxyConfigurationOptional; default off

There is no sort option. Goldin's lots search ignores sortOrder and does not return description text.

Example — Goldin sold comps (sports cards)

{
"mode": "sold",
"searchQueries": ["charizard psa 10"],
"auctionType": "Elite",
"maxItems": 50
}

Example — 1986–87 Jordan rookies, PSA 8–10, sold in 2025

Sold comps for 1986–87 Jordan rookies graded PSA 8 through 10 that closed in 2025. Year is filtered on Goldin's side. Sale date, rookie, and grade range are applied while scanning (maxScan). categories, sports, and autographedOnly are included so every added filter is in one input.

{
"mode": "sold",
"searchQueries": ["michael jordan rookie"],
"soldAfter": "2025-01-01",
"soldBefore": "2025-12-31",
"maxScan": 2000,
"yearMin": 1986,
"yearMax": 1987,
"grader": "PSA",
"graders": ["PSA"],
"category": "Sport",
"categories": ["Sport"],
"sport": "Basketball",
"sports": ["Basketball"],
"rookiesOnly": true,
"autographedOnly": false,
"minGrade": 8,
"maxGrade": 10,
"maxItems": 100
}

Example — live Weekly lots

{
"mode": "live",
"auctionType": "Weekly",
"grader": "PSA",
"maxItems": 100
}

Example — marketplace Fixed Price

{
"mode": "marketplace",
"searchQueries": ["michael jordan"],
"maxItems": 50
}

Example — specific lot URLs

{
"mode": "lot_urls",
"startUrls": [
{ "url": "https://goldin.co/item/1999-pokemon-base-set-holo-4-charizard-psa-mint-9fcmjr" }
]
}

Monitor new lots, price drops and bids

Schedule this Actor to watch a saved search and get only deltas: new lots, price drops, and bid increases since the last run. Turn on monitorMode, pick a distinct monitorStoreName per watch, and use the same keywords and filters each time.

The first run is the baseline: it still emits rows (up to maxItems) while remembering every scanned lot’s price and bid count. Later runs skip unchanged lots and charge only when something changed. monitorMaxScan controls how deep each run reads; maxItems caps how many changed rows are pushed per run.

{
"mode": "live",
"searchQueries": ["charizard psa 10"],
"monitorMode": true,
"monitorStoreName": "goldin-charizard-psa10",
"maxItems": 50,
"monitorMaxScan": 1000
}

Tip: pair monitorMode with an Apify Schedule (hourly or daily) so you get a small dataset of fresh activity without re-scraping the full catalog.

Output

FieldDescription
lotId / lotNumber / metaSlug / urlIdentifiers & page URL
title / statusTitle and Live / Completed_Sold / …
auctionId / auctionTypeParent auction + tier
grader / grade / gradeNumericParsed grading
yearFirst card year in the title (1986-87 → 1986)
isRookie / isAutographedRookie and autograph flags from the title
serialNumber / serialLimitPrint run (12/99 → 12 and 99; /99 sets the limit only)
itemType / companyIdPresent when the search hit includes them
allowOffers / vaultableListing flags when present
currentPrice / finalPrice / minBidPriceUSD prices
buyersPremiumPct / priceWithPremiumPremium % and all-in cost
reserveAmount / reserveMet / bidCountReserve & bidding
startAt / endAt / soldAtTimestamps
primaryImageUrl / imageUrlsCloudFront images
searchQuery / mode / scrapedAtRun metadata

Sample record

{
"lotId": "202607-2314-0801-5f728d9d-0d42-4245-9805-84d252329706",
"title": "2009-10 Topps Chrome Refractor #101 Stephen Curry Rookie Card (#071/500) - BGS GEM MINT 9.5",
"status": "Live",
"auctionType": "Elite",
"grader": "BGS",
"grade": "BGS GEM MINT 9.5",
"gradeNumeric": 9.5,
"year": 2009,
"isRookie": true,
"isAutographed": false,
"serialNumber": 71,
"serialLimit": 500,
"currentPrice": 34000,
"buyersPremiumPct": 22,
"priceWithPremium": 41480,
"bidCount": 23,
"currency": "USD",
"url": "https://goldin.co/item/2009-10-topps-chrome-refractor-101-stephen-curry-rookie-card-071-500-bgzew9",
"primaryImageUrl": "https://d2tt46f3mh26nl.cloudfront.net/public/Lots/example/image@1x"
}

Use cases

  • Consignment pricing — Elite sold comps before setting reserves
  • Dealer watchlists — Weekly live lots filtered by PSA / BGS
  • High-end vs eBay — Goldin hammer vs marketplace sold volume
  • TCG / Pokémon comps — sold archive search by set and grade
  • Marketplace scan — Fixed Price buy-now lots
  • Automation / MCP — scheduled sold pulls into sheets or warehouses

Integration examples

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/goldin-scraper').call({
mode: 'sold',
searchQueries: ['jordan psa 10'],
maxItems: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 3));

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("crawloop/goldin-scraper").call(run_input={
"mode": "live",
"auctionType": "Weekly",
"maxItems": 50,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item.get("currentPrice"))

cURL

curl "https://api.apify.com/v2/acts/crawloop~goldin-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"sold","searchQueries":["charizard"],"maxItems":20}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call this Actor by its Store ID / name.

Example prompts:

  • "Run Goldin Auctions Scraper in sold mode for 'Shohei Ohtani PSA 10' and return the top 20 comps as JSON"
  • "Scrape live Weekly Goldin lots graded PSA and summarize average bid and buyer's premium"
  • "Chain Goldin sold comps then Fanatics Collect Scraper for the same Charizard titles"

FAQ

Is this a Goldin API alternative?
Yes for public lot search: live, sold, and marketplace rows via Goldin's search endpoint — no official developer API key required.

Does the Goldin scraper need a proxy?
Usually no. Enable Apify Proxy only if you hit rate limits.

What is priceWithPremium?
Goldin adds a buyer's premium on top of hammer (often ~22%). priceWithPremium = currentPrice × (1 + buyersPremiumPct/100).

Can I scrape all Goldin sold results?
Yes — mode: sold with empty searchQueries and maxItems: 0. The archive is large; use keywords and PPE limits for focused comps.

How do I get sports card or Pokémon comps?
Use mode: sold with queries like mantle psa 8 or charizard psa 10, optionally auctionType: Elite or grader: PSA.

Why is grade sometimes null?
Grades are parsed from titles. Ungraded memorabilia may not match; use grader when titles include PSA/BGS/etc.

Can I filter Goldin sold prices by date?
Yes. Set soldAfter and soldBefore to YYYY-MM-DD (or a relative window such as 30 days). Both days are inclusive. The filter uses endAt on sold/completed lots and leaves live lots unchanged. Goldin has no sold-date parameter and does not return this endpoint in date order, so there is no sort option — the Actor keeps scanning up to maxScan raw hits per query and keeps the matches. maxItems still caps saved rows.

Can I filter by card year / rookie / autograph?
yearMin and yearMax are sent as a server-side year range (1986–1987 for a 1986-87 card). rookiesOnly matches Rookie, a standalone RC, 1st Bowman, First Bowman, and Bowman 1st. autographedOnly matches Auto, Autograph, Signed, and Signature, and does not match Automobile. minGrade / maxGrade use the numeric grade parsed from the title. Description text is not included in search results, so these flags come from the title only.

What happens when Goldin search is down?
The lots search sometimes returns HTTP 503 search_unavailable for several seconds. The Actor retries 429 and 5xx responses and network errors with backoff (8 attempts by default, waits about 1, 2, 4, 8, 15, 20, and 20 seconds). If a later page still fails after some rows were saved, that query stops, the next query continues, and the run finishes succeeded with the status Goldin search was temporarily unavailable — returned N partial results. If nothing could be fetched, the run fails with Goldin search is temporarily unavailable (HTTP 503). Please retry in a few minutes. When that request included filters, the message also says If this persists, a filter combination may be unsupported by Goldin search. A monitor run that was cut short does not treat unseen lots as removed and does not replace the baseline.

ActorRole
Goldin Auctions Scraper ◄── you are hereHigh-end sports cards / TCG hammer + sold
Heritage Auctions ScraperHeritage live bids and archive cards
Fanatics Collect ScraperWeekly / Premier auctions + sold
PSA Population Report ScraperPSA pop census and gem rate
TCGPlayer Listings ScraperUS TCG listings and shops
Cardmarket Listings ScraperEU TCG listings and shops
eBay Sold Listings ScraperMarketplace sold prices
eBay Active Listings ScraperLive asking prices
eBay Sold Price IntelligenceAggregated sold stats