GOAT Scraper - Sneaker Asks, Last Sale, Sizes & Prices avatar

GOAT Scraper - Sneaker Asks, Last Sale, Sizes & Prices

Pricing

from $1.00 / 1,000 product results

Go to Apify Store
GOAT Scraper - Sneaker Asks, Last Sale, Sizes & Prices

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

Abot API

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

0

Monthly active users

12 days ago

Last modified

Categories

Share

GOAT Scraper: Sneaker Asks, Last Sale, Sizes & Prices

GOAT Scraper turns GOAT, the sneaker and streetwear resale marketplace, into structured product data. Search by keyword, browse the catalogue with filters alone, or paste GOAT product, search, brand, collection and category links. 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 size in the market you choose. Export the dataset as JSON, CSV or Excel, or pull it straight into your app through the API.

Why This Scraper?

  • Four ways to reach the catalogue. Search by keyword, browse by filters alone, or paste GOAT product, search, brand, collection and category links. A pasted browse link is paged like a search; a pasted product link always returns that single product in full.
  • Full product identity every time. Brand, SKU, colorway, designer, silhouette, sizing, release date, retail price, images and the product story, whichever mode found it.
  • The live per size market table on demand. Turn on Fetch full market data for the lowest ask, Instant Ship price, last sold price and stock status for every size, and pay the extra fee only when you use it.
  • A real ship-to market, not a currency label. GOAT prices and stocks sizes differently per country, so switching Market genuinely changes which sizes and prices come back, not just how they are labelled.
  • Server side filters. Brand, category, activity, gender, condition, size, price and release year all narrow GOAT's own search, so a filtered run reads fewer pages instead of throwing rows away afterwards.
  • Built for monitoring. Incremental mode returns only new and changed products on recurring runs, and price, ask or stock moves are reported as the signal they are on a resale marketplace, not filtered out as noise.
  • Fails loudly instead of going quiet. A run the site refuses stops with a clear message, so "nothing matched this search" is never confused with "GOAT could not be reached".

Use Cases

  • Resale investors and flippers: compare lowest ask, last sale and Instant Ship price across sizes to spot underpriced pairs.
  • Sneaker release trackers: monitor new drops and price movement on hyped releases as soon as they land on GOAT.
  • Marketplace and price comparison tools: feed product identity, retail price and live market data into your own app or tracker.
  • Reselling and inventory businesses: check stock status and per size pricing across a catalogue before buying or listing.
  • Market research and data science: build a history of ask and sale prices per size for sneaker market analysis.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
productId, slug, urlGOAT's product id, its URL slug and the product page link
name, nicknameFull product name and its short nickname
brand, sku, colorway, colorBrand, style code, colorway text and base colour
designer, silhouette, midsole, upperMaterialDesign attributes, when GOAT publishes them
productCategory, productType, activitiesShoes, clothing or accessories, product type, and activity tags
gender, gendersPrimary audience and every audience it is cut for
sizeRange, sizeUnit, sizeBrandEvery size the product exists in, and the sizing system
releaseDate, releaseYear, releaseMonth, seasonRelease data
retailPriceOriginal retail price, USD
lowestAsk, instantShipLowestAskLowest ask and Instant Ship price, USD
lowestAskSource"search_match" (the one variant matched) or "all_sizes" (true minimum, with Fetch full market data on)
matchedSize, matchedCondition, matchedBoxConditionThe variant GOAT's own search matched
isUnderRetail, hasStock, statusWhether it sits under retail, whether there is stock, listing status
minimumOffer, maximumOfferThe offer bounds GOAT enforces
story, storyHtmlThe product write-up, plain and as HTML
imageUrl, gridImageUrl, originalImageUrlProduct images
collectionSlugsGOAT collections the product is featured in
market, currency, localPricingThe market you asked for, and the retail price and ask in that market's own currency
siteName, scrapedAtProvenance
sizes[]With Fetch full market data on: one row per size, with condition, lowest ask, Instant Ship price, last sale and stock status
lastSale, lastSaleLow, lastSaleHigh, totalSizeCountWith Fetch full market data on: recent sale price roll up and market depth
changeType, changedFields, firstSeenAt, lastSeenAtIncremental mode only: how the product changed since the last run

With Fetch full market data on, a row also carries the full image gallery (imageUrls), every size option GOAT lists, classification flags (taxonomy, isOfferable, isResellable) and per condition listing counts. detailCarriedForward appears, and is true, only when a market fetch failed and the row was repaired from the previous run instead of left blank.

How to Use

  1. Pick a mode: search (by keyword) or url (paste GOAT links).
  2. For search mode, fill in Search terms, or leave it empty and set filters alone to browse the whole catalogue. For URL mode, paste product, search, brand, collection or category links; the same filters apply to every pasted browse link.
  3. Turn on Fetch full market data if you need the per size ask, Instant Ship price, last sale and stock table, and set Max items to control run size and cost.
  4. Click Start, then download the dataset as JSON, CSV or Excel, or read it through the API.

Keyword search:

{
"mode": "search",
"searchTerms": ["air jordan 1", "nike dunk low"],
"maxItems": 50
}

Browse the catalogue with filters alone (no search terms):

{
"mode": "search",
"searchTerms": [],
"brands": ["Nike"],
"activity": "basketball",
"maxPriceUsd": 150,
"releaseYearFrom": 2024,
"maxItems": 200
}

Paste GOAT links, with full market data:

{
"mode": "url",
"urls": [
"https://www.goat.com/brands/new-balance",
"https://www.goat.com/sneakers"
],
"fetchDetails": true,
"maxItems": 100
}

A different ship-to market, Instant Ship stock only:

{
"mode": "search",
"searchTerms": ["yeezy 350"],
"market": "GB",
"instantShipOnly": true,
"maxItems": 30
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/goat-sneaker-scraper").call(run_input={"mode": "search", "searchTerms": ["air jordan 1"], "maxItems": 20})
for product in client.dataset(run["defaultDatasetId"]).iterate_items():
print(product["name"], product["lowestAsk"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/goat-sneaker-scraper').call({ mode: 'search', searchTerms: ['air jordan 1'], maxItems: 20 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

Max items and GOAT's own limits

GOAT's own search returns at most 1000 products for any single search term, brand, collection or category link; the run logs it when this ceiling truncates a scope. Max items is the cap on top of that: raise it, or set it to 0, to collect everything up to GOAT's own ceiling. Max pages is a separate safety bound on how many result pages one search term or link can walk; leave it at 0 to let Max items decide instead.

Resume and recurring updates

  • Resume (resumeFromRunId) continues one interrupted run: paste its run or dataset id and the actor skips every product it already collected there, so you don't pay twice.
  • Incremental mode (incrementalMode) is for scheduled runs over the same search, filters and market. Each product is classified NEW, UPDATED (with changedFields, since a price, ask or stock move is the signal on a resale marketplace, not noise), UNCHANGED (suppressed and not billed unless emitUnchanged is on), REAPPEARED or EXPIRED (only after a run that scanned the whole tracked scope, and only with emitExpired). stateKey names or shares the stored state, so two differently configured searches never mix. With incremental mode off, output is exactly as before.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch (GOAT keyword search) or url (process pasted GOAT links).
searchTermsarray["air jordan 1"]Terms to search GOAT for (search mode). Leave empty with a filter set to browse the whole catalogue.
urlsarray(none)GOAT product, search, brand, collection or category links (url mode). Add ?page=3 to a browse link to start walking from that page.
brandsarray(none)Only these brands, OR-ed together. Applies in both modes.
productCategorystringanyshoes, clothing, accessories, bags or collectibles. Applies in both modes.
activitystringanylifestyle, running, basketball or skateboarding. Applies in both modes.
genderstringanymen, women, youth or infant. Applies in both modes.
conditionstringanynew_no_defects, new_with_defects or used. Also narrows the per size market table when Fetch full market data is on.
sizeUsstring(none)Only this US size, for example 10 or 9.5.
minPriceUsdinteger(none)Only products whose lowest ask is at least this many USD.
maxPriceUsdinteger(none)Only products whose lowest ask is at most this many USD.
releaseYearFrominteger(none)Only products released in this year or later.
releaseYearTointeger(none)Only products released in this year or earlier.
inStockOnlybooleanfalseOnly products that currently have stock on GOAT.
instantShipOnlybooleanfalseOnly products with an Instant Ship price.
underRetailOnlybooleanfalseOnly products whose lowest ask is below retail price.
marketstringUSShip-to market: US, GB, CA, AU, DE or JP. Changes which sizes and prices come back; top level money fields stay USD.
sortResultsBystringrelevanceOrder of the rows this run collected (not the whole catalogue): relevance, price_asc, price_desc, release_newest or release_oldest. Use the price filters to target the cheapest or dearest listings across the whole catalogue.
fetchDetailsbooleanfalseFetch each product's live per size market table (lowest ask, Instant Ship price, last sold price, stock status), full image gallery, offer bounds and for sale counts. Charged once per product on top of the per result fee.
maxItemsinteger20Stop after this many products across all search terms and links. 0 = unlimited (up to GOAT's own ceiling).
maxPagesinteger0Safety bound on result pages walked per search term or link. 0 = no separate limit; Max items decides instead.
resumeFromRunIdstring(none)Continue one interrupted run: paste its run id or dataset id.
incrementalModebooleanfalseReturn only new and changed products on scheduled runs over the same search.
stateKeystring(none)Name or share an incremental-mode state. Left empty, a key is derived automatically from the mode, search terms, links, filters, market and the Fetch full market data setting.
emitUnchangedbooleanfalseAlso return (and bill) products unchanged since the last run.
emitExpiredbooleanfalseAlso return (and bill) products no longer found, after a complete scan of the tracked search.
proxyobjectApify ProxyConnection settings.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"productId": 90000001,
"slug": "sample-brand-classic-runner-ab1234-100",
"url": "https://www.goat.com/sneakers/sample-brand-classic-runner-ab1234-100",
"name": "Sample Brand Classic Runner",
"nickname": "Classic Runner",
"brand": "Sample Brand",
"sku": "AB1234-100",
"colorway": "White/Black",
"color": "White",
"productCategory": "shoes",
"productType": "sneakers",
"gender": "men",
"sizeRange": ["7", "8", "9", "10", "11"],
"releaseDate": "2024-03-01T00:00:00.000Z",
"releaseYear": 2024,
"retailPrice": 120.0,
"lowestAsk": 95.0,
"instantShipLowestAsk": 110.0,
"lowestAskSource": "all_sizes",
"isUnderRetail": true,
"hasStock": true,
"status": "active",
"imageUrl": "https://image.goat.com/sample-1.png",
"market": "US",
"currency": "USD",
"localPricing": { "currency": "USD", "retailPrice": 120.0, "lowestAsk": 95.0 },
"sizes": [
{
"size": "9",
"shoeCondition": "new_no_defects",
"boxCondition": "good_condition",
"lowestAsk": 100.0,
"instantShipLowestAsk": 115.0,
"lastSale": 98.0,
"stockStatus": "single_in_stock"
},
{
"size": "10",
"shoeCondition": "new_no_defects",
"boxCondition": "good_condition",
"lowestAsk": 95.0,
"instantShipLowestAsk": 110.0,
"lastSale": 102.0,
"stockStatus": "multiple_in_stock"
}
],
"lowestAskSize": "10",
"lastSale": 100.0,
"lastSaleLow": 98.0,
"lastSaleHigh": 102.0,
"totalSizeCount": 2,
"siteName": "GOAT",
"scrapedAt": "2026-01-01T00:00:00Z"
}

Plan Requirement

The default proxy setting works out of the box, and the actor rotates connections automatically when one is refused. Apify Residential is available under Connection as a fallback if you start seeing refusals. Fetch full market data is billed once per product on top of the per result fee; a catalogue only run never triggers that extra charge. The Pricing tab shows the current rates.

FAQ

How much does it cost?

You pay per product returned, plus once per product when Fetch full market data is switched on. The Pricing tab shows the current rates. Use Max items to cap the cost of any run.

This actor collects only publicly available marketplace data. You are responsible for how you use it: follow GOAT's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Product images and write ups may be subject to third party rights.

Can I get only new or changed products on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new and changed products, and unchanged ones are not billed. A price, ask or stock move is reported as an update, since that is the signal on a resale marketplace.

Why did a run return fewer products than I expected?

GOAT's own search returns at most 1000 products for any single search term, brand, collection or category link; 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, or check whether Max items stopped the run first.

Why did my run fail instead of returning an empty dataset?

If GOAT refuses every request, the run stops with a clear message so "nothing matched this search" is never confused with "nothing could be read". Run it again in a few minutes, or switch the Proxy setting to Apify Residential.

Can I automate this with my own tools?

Yes. Call it from the Apify API or client libraries, schedule it, or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

๐Ÿ”— Want more fashion data?

Pair this actor with these related scrapers from the same team:

๐Ÿ‘— KREAM Korea Scraper
Scrape KREAM (kream.co.kr) sneaker and fashion resale data by keyword search, filters...
๐Ÿ‘— StockX Scraper
Scrape StockX market data by keyword, category or URL. Every row carries lowest ask...
๐Ÿ‘— KLEKT Sneaker & Apparel Resale Scraper
Scrape sneaker and streetwear listings from KLEKT (klekt.com). Browse the catalog with...
๐Ÿท๏ธ ThredUp Scraper
Scrape ThredUp resale listings by keyword, department, brand, size, condition, price or...
๐Ÿ‘— 24S Scraper
Scrape 24S luxury fashion by category, filters, or URL. Extract brand, name, price...
๐Ÿ‘— UNIQLO Scraper
Scrape UNIQLO products across 21 country storefronts in local currency. Price with pre...

๐Ÿ‘‰ Browse all abotapi scrapers

๐Ÿ’ฌ Support & custom scrapers

  • ๐Ÿž Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • ๐Ÿ› ๏ธ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
  • โญ Enjoying it? A quick review on the actor page helps other users find it.