Etsy Shop Scraper
astravalabs/etsy-shop-catalog-scraper
Submit bare shop names or Etsy shop URLs and receive one clean row per catalog listing. Shops run in parallel, prices are localized across 32 markets, and separate per-shop and whole-run ceilings make catalog exports predictable.
// run this actor
Use the Apify CLI for a quick local run, or the HTTP API from any language or automation platform.
apify call astravalabs/etsy-shop-catalog-scraper --input '{"shops":["ArtFablePets","WilshireGoodsShop"],"country":"US","maxTotalResults":5000}'# Set API token
API_TOKEN=<YOUR_API_TOKEN>
# Prepare Actor input
cat > input.json << 'EOF'
{
"shops": [
"ArtFablePets",
"WilshireGoodsShop"
],
"country": "US",
"maxTotalResults": 5000
}
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-shop-catalog-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.
// output — 10 top-level fields per listing
// use cases
- Competitor catalog tracking
- Assortment and pricing research
- Seller discovery
- Product-enrichment pipeline input
// boundaries
- Optimized for catalog rows; it does not return shop profile statistics or reviews.
- maxListings is a ceiling, not a guaranteed row count for smaller catalogs.
Measured 50-shop runs returned 1,720/1,720 rows in 8.0–10.5 seconds with zero failed shops across eight concurrency samples.
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