Etsy Shop Details Scraper avatar

Etsy Shop Details Scraper

Deprecated

Pricing

from $15.00 / 1,000 etsy shop profile extracteds

Go to Apify Store
Etsy Shop Details Scraper

Etsy Shop Details Scraper

Deprecated

Extract public Etsy shop profiles by URL or shop name. Returns seller identity, ratings, reviews, catalog size, location, branding and provenance as flat JSON.

Pricing

from $15.00 / 1,000 etsy shop profile extracteds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

8 hours ago

Last modified

Share

What is Etsy Shop Details Scraper?

Etsy Shop Details Scraper turns Etsy shop URLs or shop names into a dataset with one public profile row per shop. Each row returns the shop ID, name and URL, title, description, slogan, owner display name, location, rating, review count, active-listing count, Star Seller badge, opening year, logo and the collection route. Ecommerce analysts, wholesale buyers, agencies, marketplace researchers and AI agents use it to compare known Etsy sellers and enrich supplier lists with clean, flat JSON.

Why teams use this Etsy shop scraper

  • One compact row per shop. Identity, reputation, catalog size and branding in a stable, flat shape for spreadsheets and LLM tool calls.
  • URLs, names or both. Mix shopUrls and shopNames; inputs are normalized and deduplicated before processing.
  • A cost ceiling you set. maxShops caps how many profiles are processed and billed.
  • Explicit nulls. A value Etsy keeps private stays null, so a blank never reads as zero.
  • Provenance on every row. source, data_sources, source_url and scraped_at show how and when each profile was collected.

Best fit for this Actor

  • Designed for workflows that already know the Etsy sellers they care about and need structured profile facts.
  • Use it for competitor benchmarking, supplier shortlists, seller enrichment and catalog-size monitoring.
  • When you start from a keyword instead of a seller, start with Etsy Product Search Scraper, then pass the shop names it finds into shopNames here.
  • For reviews of a seller's products, continue with Etsy Reviews Scraper.
  • For listings, prices and shop catalogs in one run, use Etsy Scraper — Products, Prices, Reviews & Shop Data instead.

Example workflow: from a competitor list to a benchmark sheet

A handmade-leather brand starts with eight competing Etsy shops. They paste the names into shopNames and set maxShops to 8. The dataset returns shop_rating, shop_review_count, total_active_listings, shop_location and on_etsy_since for each seller. They export the rows to a spreadsheet, compare catalog size against review volume, then schedule the same input monthly to see which competitors are expanding their catalogs.

Input

FieldTypeWhat it controls
shopUrlsarrayEtsy shop URLs such as https://www.etsy.com/shop/HunchbackLeather.
shopNamesarrayEtsy shop handles such as HunchbackLeather, without spaces or @.
maxShopsintegerCap on shop profiles processed and billed. Default 10.
includeShopSectionsbooleanAdd public shop-section names when Etsy exposes them. Default true.
proxyConfigurationobjectKept so older saved tasks keep working.
{
"shopUrls": [{ "url": "https://www.etsy.com/shop/HunchbackLeather" }],
"shopNames": ["LindyLonghurst"],
"maxShops": 2,
"includeShopSections": true
}

Output

One row per matched shop, with record_type set to shop.

FieldWhat it contains
shop_id, shop_name, shop_urlPublic Etsy shop identity
title, description, shop_sloganPublic profile copy
shop_ownerOwner display name as shown on the profile
shop_locationPublic location
shop_rating, shop_review_countAggregate rating and review count
total_active_listingsCurrent public catalog size
total_sales_countLifetime sales when Etsy publishes the figure
is_star_seller, on_etsy_sinceStar Seller badge and opening year
shop_logo_url, shop_banner_urlBranding image URLs
shop_sectionsPublic section names when requested and exposed
source, data_sourcesCollection route used for the row
source_url, scraped_atLookup URL and collection time
{
"record_type": "shop",
"shop_id": "34829689",
"shop_name": "HunchbackLeather",
"shop_url": "https://www.etsy.com/shop/HunchbackLeather",
"title": "HunchbackLeather",
"description": "Shop Handmade leather goods from our Indiana shop, USA by HunchbackLeather located in Goshen, Indiana.",
"shop_owner": "Alex Carter",
"shop_location": "Goshen, Indiana",
"shop_rating": 5,
"shop_review_count": 513,
"total_sales_count": null,
"total_active_listings": 18,
"is_star_seller": null,
"on_etsy_since": null,
"shop_logo_url": "https://i.etsystatic.com/34829689/r/isla/33eef0/76531513/isla_500x500.76531513_278bsa63.jpg",
"shop_banner_url": null,
"shop_sections": null,
"shop_slogan": "Handmade leather goods from our Indiana shop, USA",
"source_url": "https://www.etsy.com/shop/HunchbackLeather",
"source": "cirkit_profile",
"data_sources": ["cirkit_profile"],
"scraped_at": "2026-10-01T12:39:11.944Z"
}

Profile coverage varies by seller and route. Shop identity, location and active-listing count are the core fields; the rich profile adds description, owner name, rating, review count, logo and slogan, and the mobile route adds the Star Seller badge and opening year. Fields such as lifetime sales, banner and sections fill in when Etsy publishes them for a shop.

Every run also writes OUTPUT and RUN_SUMMARY records to the default key-value store with an outcome of COMPLETE, PARTIAL, VALID_EMPTY, INVALID_INPUT, UPSTREAM_FAILED or CONFIG_ERROR, plus stored-profile counts.

Pricing

This Actor uses Pay per event with Apify platform usage included in the event price. You pay one Etsy shop profile extracted event per validated shop row stored in the dataset and one small Actor Start event per run. Shops that match nothing are free. The live Pricing tab on this page shows the current event prices.

Worked example: eight competitor shop names with maxShops set to 8 cost at most eight profile events plus one start event. maxShops is the hard ceiling for profile events.

API example

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~etsy-shop-details-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"shopNames": ["HunchbackLeather"], "maxShops": 1}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("khadinakbar/etsy-shop-details-scraper").call(run_input={
"shopNames": ["HunchbackLeather", "LindyLonghurst"],
"maxShops": 2,
})
for shop in client.dataset(run["defaultDatasetId"]).iterate_items():
print(shop["shop_name"], shop["shop_rating"], shop["total_active_listings"])

Use with AI agents (MCP)

Connect the Actor to Claude, ChatGPT, Cursor or any MCP client through Apify MCP, then ask:

Compare the Etsy shops HunchbackLeather and LindyLonghurst on rating, review count, active listings and location, and tell me which has the larger catalog.

The agent calls the Actor with shopNames, reads the rows with get-dataset-items, and checks OUTPUT.outcome for the run result. source_url and scraped_at give provenance for each fact. Cost is one profile event per stored shop, capped by maxShops.

Best results

Starting situationHelpful actionExpected outcome
A list of shop linksPaste them in shopUrlsOne row per shop
Handles from a spreadsheetPaste them in shopNames exactly as Etsy spells themClean matches
A large supplier listSet maxShops to the list sizeA predictable cost ceiling
Monitoring catalog growthSchedule the same input monthly and compare total_active_listingsA trend per seller
A shop returns VALID_EMPTYConfirm the handle on Etsy, since shops can be renamedA corrected handle for the next pass

Builder's note

I built this for the moment when you already know the sellers and want their profiles side by side, so it returns one compact row per shop instead of a full catalog crawl. I designed it to merge two collection routes by canonical shop name, because each route exposes different profile fields and together they give a fuller picture. I kept unknown values as null on purpose, so a missing sales figure never turns into a misleading zero.

FAQ

Can I combine URLs and names?

Yes. Both lists are normalized, deduplicated and capped by maxShops.

Why is a field null?

Etsy publishes different profile fields for different sellers. A null means the value was not published, and it never stands in for zero.

Does it return listings or reviews?

It returns shop profiles. Listings and reviews come from the related Etsy Actors linked above.

Responsible use

This Actor collects publicly accessible Etsy shop profiles. Owner names are personal data under laws such as the GDPR and CCPA, so use them only with a lawful basis, keep data no longer than you need, and respect Etsy's terms. Etsy is a trademark of its owner; this independent Actor is not affiliated with or endorsed by Etsy. For questions or bugs, open a ticket in the Issues tab.