Etsy Shop Details Scraper
DeprecatedPricing
from $15.00 / 1,000 etsy shop profile extracteds
Etsy Shop Details Scraper
DeprecatedExtract 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
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
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
shopUrlsandshopNames; inputs are normalized and deduplicated before processing. - A cost ceiling you set.
maxShopscaps how many profiles are processed and billed. - Explicit
nulls. A value Etsy keeps private staysnull, so a blank never reads as zero. - Provenance on every row.
source,data_sources,source_urlandscraped_atshow 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
shopNameshere. - 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
| Field | Type | What it controls |
|---|---|---|
shopUrls | array | Etsy shop URLs such as https://www.etsy.com/shop/HunchbackLeather. |
shopNames | array | Etsy shop handles such as HunchbackLeather, without spaces or @. |
maxShops | integer | Cap on shop profiles processed and billed. Default 10. |
includeShopSections | boolean | Add public shop-section names when Etsy exposes them. Default true. |
proxyConfiguration | object | Kept 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.
| Field | What it contains |
|---|---|
shop_id, shop_name, shop_url | Public Etsy shop identity |
title, description, shop_slogan | Public profile copy |
shop_owner | Owner display name as shown on the profile |
shop_location | Public location |
shop_rating, shop_review_count | Aggregate rating and review count |
total_active_listings | Current public catalog size |
total_sales_count | Lifetime sales when Etsy publishes the figure |
is_star_seller, on_etsy_since | Star Seller badge and opening year |
shop_logo_url, shop_banner_url | Branding image URLs |
shop_sections | Public section names when requested and exposed |
source, data_sources | Collection route used for the row |
source_url, scraped_at | Lookup 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 ApifyClientclient = 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 situation | Helpful action | Expected outcome |
|---|---|---|
| A list of shop links | Paste them in shopUrls | One row per shop |
| Handles from a spreadsheet | Paste them in shopNames exactly as Etsy spells them | Clean matches |
| A large supplier list | Set maxShops to the list size | A predictable cost ceiling |
| Monitoring catalog growth | Schedule the same input monthly and compare total_active_listings | A trend per seller |
A shop returns VALID_EMPTY | Confirm the handle on Etsy, since shops can be renamed | A 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.