GOAT Scraper - Sneaker Asks, Last Sale, Sizes & Prices
Pricing
from $1.00 / 1,000 product results
GOAT Scraper - Sneaker Asks, Last Sale, Sizes & Prices
Scrape GOAT (goat.com), the sneaker and streetwear resale marketplace. Search or paste product, brand, collection and category URLs. 45+ fields per product: lowest ask, Instant Ship price, last sale and stock status for every size, retail, SKU, colorway, release date, images and story.
Pricing
from $1.00 / 1,000 product results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
GOAT Sneaker Marketplace Scraper
Scrape GOAT, the sneaker and streetwear resale marketplace, at product level. Search by keyword, browse the catalogue with filters alone, or paste GOAT product, search, brand, collection and category URLs.
Every product comes back with its full identity and, with Fetch full market data on, the live per size market table: lowest ask, Instant Ship price, last sold price and stock status for every single size, in the market you choose.
What you get
Always
| Field | What it is |
|---|---|
productId, slug, url | GOAT's product id, URL slug and product page link |
name, nickname | Full product name and its short nickname |
brand, sku, colorway, color | Brand, style code, colorway text and base colour |
designer, silhouette, midsole, upperMaterial | Design attributes |
productCategory, productType, activities | Shoes / clothing / accessories, type, and activity tags |
gender, genders | Primary audience and every audience it is cut for |
sizeRange, sizeUnit, sizeBrand | Every size the product exists in, and the sizing system |
releaseDate, releaseYear, releaseMonth, season | Release data |
retailPrice | Original retail price, USD |
lowestAsk, instantShipLowestAsk | Lowest ask and Instant Ship price, USD |
lowestAskSource | all_sizes (true minimum across every size) or search_match (the one variant GOAT's search matched) |
matchedSize, matchedCondition, matchedBoxCondition | The variant GOAT's search matched |
isUnderRetail, hasStock, status | Whether it sits under retail, whether there is stock, listing status |
minimumOffer, maximumOffer | The offer bounds GOAT enforces |
story, storyHtml | The product write-up, plain and as HTML |
imageUrl, gridImageUrl, originalImageUrl | Product images |
collectionSlugs | GOAT collections the product is featured in |
market, currency, localPricing | The market you asked for, and the retail/ask in that market's own currency |
siteName, scrapedAt | Provenance |
With fetchDetails on
| Field | What it is |
|---|---|
sizes[] | One row per size: size, shoeCondition, boxCondition, lowestAsk, instantShipLowestAsk, lastSale, stockStatus |
lowestAsk, lowestAskSize, highestAsk | True lowest ask across every size, the size it is on, and the highest |
lastSale, lastSaleLow, lastSaleHigh, lastSaleSizeCount | Median, cheapest and dearest most-recent sale price across sizes |
totalSizeCount, sizesWithAskCount, inStockSizeCount, instantShipSizeCount | Depth of the market on this product |
imageUrls[] | The full image gallery, not just the hero shot |
sizeOptions[] | Every size option GOAT lists for the product |
taxonomy, isOfferable, isResellable | Classification and trade flags |
usedForSaleCount, withDefectForSaleCount, sellingCount | How many listings exist per condition |
detailCarriedForward | Present and true only when a market fetch failed and the row was repaired from the previous run |
In incremental mode
changeType (NEW / UPDATED / REAPPEARED / UNCHANGED / EXPIRED), changedFields,
firstSeenAt, lastSeenAt.
Modes
Search
Give one or more search terms. Each is scraped independently.
{ "mode": "search", "searchTerms": ["air jordan 1", "nike dunk low"], "maxItems": 50 }
Leave searchTerms empty and set filters instead to browse the catalogue itself, for example every
Nike basketball shoe under $150 released since 2024:
{"mode": "search","searchTerms": [],"brands": ["Nike"],"activity": "basketball","maxPriceUsd": 150,"releaseYearFrom": 2024,"maxItems": 200}
URL
Paste any of these and the actor works out what to do with it:
| URL | What happens |
|---|---|
https://www.goat.com/sneakers/<slug> | That one product, in full |
https://www.goat.com/search?query=travis+scott | Paged like a keyword search |
https://www.goat.com/brands/new-balance | The brand, resolved to GOAT's own brand name |
https://www.goat.com/collections/<slug> | That collection |
https://www.goat.com/sneakers (or /apparel, /accessories) | That category |
any browse URL with ?page=3 | Starts the walk at page 3 |
The filters apply to every pasted browse URL as well. A pasted product URL is the one exception: it always returns that single product in full.
Filters
All of them are sent to GOAT's own search, so a filtered run reads fewer pages instead of throwing rows away afterwards.
brands, productCategory, activity, gender, condition, sizeUs, minPriceUsd,
maxPriceUsd, releaseYearFrom, releaseYearTo, inStockOnly, instantShipOnly,
underRetailOnly.
condition also narrows the per size market table, so the lowest ask and last sale you get back are
for that condition only.
Ship-to market
market (US, GB, CA, AU, DE, JP) is a real narrowing, not a currency label. GOAT offers different
sizes at different prices per country, so switching markets changes the asks, the last sale prices
and which sizes come back. Top level money fields stay in USD so rows remain comparable; the
market's own currency is carried in localPricing.
Recurring monitoring
Turn on Incremental changes for scheduled runs and schedule the actor. The first run returns
everything as NEW; later runs return only what changed. Price, ask and stock moves are reported as
UPDATED with the exact fields listed in changedFields, because on a resale marketplace those are
the signal rather than noise.
- State is kept per search, URL, filter and market setup, so two different searches never mix.
emitUnchangedandemitExpiredare off by default. Both return, and bill, extra rows.EXPIREDis only produced after a run has fully scanned the tracked search. A run that was capped by Max items, resumed, blocked, or truncated by GOAT's own 1000-product search limit never marks anything expired.
To continue one specific interrupted crawl instead, paste its run id into Resume from a previous run. Products that run already collected are skipped, and not charged again.
Limits worth knowing
- GOAT's search returns at most 1000 products per query. A very broad scope is truncated there, and the run says so in the log. Narrow it with the brand, category, size, price or release year filters to reach the rest.
- GOAT does not publish highest bid, bid counts or a historical sales chart on its public surfaces.
The deepest sales signal it does publish is the most recent sale price per size, which this
actor returns in
sizes[].lastSaleplus thelastSale/lastSaleLow/lastSaleHighroll-up.
Costs
You are charged once when the run starts, once for every product returned, and once more per product when Fetch full market data is on. A catalogue-only run never triggers the third charge. The Store page shows the current rates.
Connection
The default proxy setting works on every plan. Apify Residential is available in the Proxy setting as a fallback if you start seeing refusals.
Output example
{"productId": 651566,"slug": "air-jordan-1-mid-chicago-554724-173","url": "https://www.goat.com/sneakers/air-jordan-1-mid-chicago-554724-173","name": "Air Jordan 1 Mid 'Chicago'","brand": "Air Jordan","sku": "554724 173","colorway": "White/Gym Red/Black","productCategory": "shoes","gender": "men","retailPrice": 115.0,"lowestAsk": 52.0,"lowestAskSize": "8","highestAsk": 334.0,"lowestAskSource": "all_sizes","instantShipLowestAsk": 75.0,"lastSale": 145.0,"lastSaleLow": 44.0,"lastSaleHigh": 307.0,"lastSaleSizeCount": 111,"totalSizeCount": 123,"sizesWithAskCount": 64,"inStockSizeCount": 64,"instantShipSizeCount": 14,"hasStock": true,"releaseDate": "2020-09-09T23:59:59.999Z","market": "US","currency": "USD","localPricing": {"currency": "USD","retailPrice": 115.0,"lowestAsk": 52.0},"sizes": [{"size": "7","sizeValue": 7,"shoeCondition": "new_no_defects","boxCondition": "good_condition","lowestAsk": 188.0,"instantShipLowestAsk": 202.0,"lastSale": 120.0,"stockStatus": "single_in_stock"}],"siteName": "GOAT"}
Verification
2026-09-01: audit re-derived the live catalogue counts from the search index the actor queries. Narrowing is monotone: 609,262 products unfiltered, 2,383 for the keyword "air jordan 1", 39 with the brand facet, 25 with the gender facet, 12 with a size facet, 6 inside a price band. Every documented filter maps to a live facet or numeric field. All five URL shapes verified: a product page returns one full record, a search URL paginates (1,351 matches), a brand page resolves to the index's own brand name (23,788), a collection page filters on its slug (83 for a live collection), and a category page maps to its product category (149,011).