collections /etsy /product-scraper
P

Etsy Product Scraper

astravalabs/etsy-product-scraper

Turn up to 1,000 Etsy listing URLs or numeric IDs into complete product-page records. The stable schema covers active, sold-out, and recognizable unavailable products, with localized prices, option-level variations, demand indicators, fulfillment, and policies.

// run this actor

Use the Apify CLI for a quick local run, or the HTTP API from any language or automation platform.

Option 01 / Apify CLICLI docs ↗
apify call astravalabs/etsy-product-scraper --input '{"listings":["4382740432","https://www.etsy.com/listing/4471608480/sculptural-mushroom-lamp"],"country":"US"}'
Option 02 / HTTP API + cURLAPI reference ↗
# Set API token
API_TOKEN=<YOUR_API_TOKEN>

# Prepare Actor input
cat > input.json << 'EOF'
{
  "listings": [
    "4382740432",
    "https://www.etsy.com/listing/4471608480/sculptural-mushroom-lamp"
  ],
  "country": "US"
}
EOF

# Run the Actor using the HTTP API
# Full API reference: https://docs.apify.com/api/v2
curl "https://api.apify.com/v2/acts/astravalabs~etsy-product-scraper/runs?token=$API_TOKEN" \
  -X POST \
  -d @input.json \
  -H 'Content-Type: application/json'

// Replace <YOUR_API_TOKEN> before running the cURL example. Keep tokens out of committed files.

inputtypebehavior
listings *string[]1–1,000 listing URLs or numeric IDs; duplicates are fetched once.
countrystringLocalization target for language, currency, shipping, and delivery. Default: US.

// output — 56 top-level fields per product

identity and taxonomy
input / listing_id / urlstringSubmitted value and canonical identity
status / title / descriptionstringProduct state and complete copy
listed_on / scraped_atdatetime?Listing and collection dates
requested_country / rendered_country / rendered_languagestring?Requested and observed locale
category / category_path / tags / materialsmixedTaxonomy and seller metadata
product flagsbool × 5Digital, physical, handmade, made-to-order, production partner
pricing and demand
price / price_min / price_maxfloat?Base and variation price range
original_price / discount_pct / currencymixedSale and currency details
availability / offer_count / quantitymixedOffer status and quantity
is_on_sale / is_free_shippingboolCommercial flags
favorites_count / demand_signal / in_cart_countmixedLive demand indicators when exposed
badgesarrayComplete badge labels
is_bestseller / is_etsys_pick / is_star_sellerboolNormalized badge flags
configuration and media
images / videoobject[]Complete media records
variationsobject[]Options with availability and per-option prices
personalizationobjectRequirement, instructions, and character limit
shop, reviews, and fulfillment
shop identitymixed × 5ID, name, URL, logo, and location
shop_total_sales / shop_age_yearsnumber?Shop scale and tenure
shop_rating / shop_review_countnumber?Shop reputation
listing_rating / listing_review_countnumber?Listing reputation
reviewsobject[]Up to four reviews embedded on the product page
shippingobjectOrigin, destination, price, processing, and delivery
policiesobjectReturns, exchanges, cancellations, and return window

// use cases

  • Price and variation monitoring
  • Competitor and catalog intelligence
  • Product research and enrichment
  • Demand, shipping, and policy analysis

// boundaries

  • The embedded reviews field is only the small sample Etsy places on the product page.
  • Optional demand and fulfillment fields are null when Etsy does not expose them for that listing and locale.
measured performance / 2026-07-17

Measured runs returned 100/100 products in 30.9 seconds, 500/500 in 2m 16.5s, and 1,000/1,000 in 4m 21.5s.

last tested / 2026-07-18

What “last tested” means

The published input contract, output field list, pricing unit, and documentation were checked against the current actor, and a sample run completed on the date shown. This is a dated product check, not an uptime guarantee; public source behavior can change after testing.

Inspect representative JSON →

// sanitized illustrative values; field names and nesting follow the published output contract

// use in a workflow

// companion actors