Online shops · Coming soon

Etsy Listings & Shop Export

Search Etsy by keyword or export whole shops. Each row is one active listing with price, views, favorites, tags and shop data. You need your own approved Etsy app.

Built and tested. Prices will be shown after release.

Coming soon to the Apify StoreFollow us on Apify

What you get, for example

modesearch
queryhandmade mug
listingId1389148459

How it will work: 3 steps

  1. Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: handmade mug in Keyword searches. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

You need your own approved Etsy app. Every user of this Actor needs their own app at etsy.com/developers/your-apps. Etsy must approve it first, then you paste its keystring and shared secret into the input. Without them the Actor saves one free notice row and stops.

Good for

  • Price and demand research for a product idea: compare price, views and favorites across many listings.
  • Shop research: export all active listings of shops you want to study.
  • Tag and keyword research: see which tags and materials sellers use for a search.

Who uses it

Etsy sellers

Compare price, views and favorites for a product idea.

Product researchers

See which tags and materials sellers use for a search.

Shop watchers

Export the active listings of shops you study.

Price

Prices will be shown after release.

Questions

Do I need my own Etsy app?

Yes. Create an app on Etsy and wait for approval. Then paste its keystring and shared secret.

Does it open etsy.com pages?

No. It reads the Etsy Open API. There is no browser and no proxy.

Why do results differ from the Etsy website?

The API ranks results in its own way. Prices are base prices, not sale prices.

Is my key safe?

Key fields are secret inputs. They are not saved in rows, logs or the run summary.

How fresh is the data?

Each row is read from Etsy during your run; fetchedAt shows when. Nothing is kept between runs. Etsy's API Terms ask you not to show listing data older than 6 hours, so run again for fresh data.

Details

Step by step on Apify
  1. Open the Input tab.
  2. Paste your keystring into Etsy API keystring (apiKey) and your shared secret into Etsy shared secret (sharedSecret).
  3. Keep the prefilled search handmade mug and Max listings per search or shop = 10.
  4. Click Start.
  5. Open the Output tab and check title, price, views and favorites.
Use cases
TaskInputYou getKey fieldsNext step
Price and demand researchkeywordsListingprice, currency, views, favoritesSort or chart in a spreadsheet
Shop researchmode: shop, shopNamesListingtitle, price, quantity, createdAtExport to CSV or Excel
Tag researchkeywordsListingtags, materials, rankCount tags in your own tool
Seller comparisonkeywordsListingshopName, shopRating, shopSalesJoin with your own data by shopId
Tips for better results
  • Start with a small search of 10 listings to test your keys.
  • Count the tags column in a spreadsheet to find common tags.
  • Run again for fresh data. Etsy asks you not to show data older than 6 hours.
Limits and good to know

The term 'Etsy' is a trademark of Etsy, Inc. This Application uses Etsy's API, but is not endorsed or certified by Etsy.

  • Your own Etsy app is required. The Actor has no shared key, no demo mode and no sample data
  • Active listings only. Sold, expired, draft and private listings are not in the public API. There are no reviews, sales history, ad slots or "in carts" counts
  • Price is the base listing price in the shop's currency. It is not converted to USD. The price on etsy.com can differ when a listing has variations or a sale
  • Search order is the API's order. It is not the same as the order on etsy.com search pages, so the top results can differ
  • Up to 10,000 listings per search or shop, 50 searches or 200 shops per run. One search of 10,000 listings took about 2 minutes in our tests; it can take longer when Etsy answers slowly, and the default run timeout is 10 minutes. For several large searches, raise the run timeout; when time runs out the run ends with PARTIAL and TIME_LIMIT and keeps the saved rows
  • Etsy request limit. Every 100 listings use 2 requests of your app's daily limit (5,000 per day for a new app). When the limit runs out mid-run, the run ends with PARTIAL and QUOTA_LIMIT
  • Not a drop-in replacement for Etsy scrapers that read etsy.com pages: some field names differ, and the source is the API, not the website

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "status": "listing",
  "mode": "search",
  "query": "handmade mug",
  "rank": 1,
  "listingId": 1389148459,
  "title": "Vintage pottery mug, handmade mug, ceramic mug, ...",
  "price": 24,
  "currency": "USD",
  "quantity": 4,
  "shopName": "msvintagenicole",
  "shopRating": 4.96,
  "shopReviewCount": 225,
  "shopSales": 794,
  "shopCountry": "US",
  "views": 1670,
  "favorites": 65,
  "tags": ["vintage mugs", "handmade mugs", "pottery mug"],
  "materials": [],
  "whoMade": "someone_else",
  "isDigital": false,
  "url": "https://www.etsy.com/listing/1389148459/vintage-pottery-mug-handmade-mug-ceramic",
  "mainImageUrl": "https://i.etsystatic.com/7160843/r/il/ecdd09/4549836599/il_fullxfull.4549836599_8pxs.jpg",
  "createdAt": "2023-01-08T23:00:19.000Z",
  "source": "etsy-open-api-v3",
  "fetchedAt": "2026-10-22T11:08:41.815Z",
  "message": null
}
Data fields (37)
FieldTypeMeaning
statusstringlisting = an active Etsy listing; api_key_required = free notice row when the Etsy keystring or shared secret is missing.
modestringsearch = found by keyword search; shop = exported from a shop.
querystringThe keyword search or shop name this listing came from.
rankintegerPosition of the listing within its search or shop, in the sort order you chose (1 = first).
listingIdintegerEtsy listing id, as in etsy.com/listing/<id>.
titlestringListing title.
descriptionstringFull listing description written by the seller.
pricenumberPrice in the listing currency (for example 34.5); null when Etsy sent none, never a made-up 0.
currencystringISO currency code of the price, for example USD or EUR.
quantityintegerUnits available.
shopIdintegerEtsy shop id.
shopNamestringShop name, as in etsy.com/shop/<name>.
shopUrlstringLink to the shop.
shopRatingnumberAverage shop review rating, 1-5.
shopReviewCountintegerNumber of shop reviews.
shopSalesintegerTotal sales the shop shows publicly.
shopCountrystringShop country, ISO code.
viewsintegerListing views Etsy reports.
favoritesintegerHow many buyers added the listing to favorites.
tagsarraySeller tags (up to 13): the search terms the seller targets.
materialsarrayMaterials the seller listed.
taxonomyIdintegerEtsy category (taxonomy) id.
whoMadestringWho made it: i_did, someone_else or collective.
whenMadestringWhen it was made, for example made_to_order or 2020_2025.
isCustomizablebooleanThe seller accepts custom requests.
isPersonalizablebooleanThe listing offers personalization.
hasVariationsbooleanThe listing has variations such as size or color.
isDigitalbooleanDigital download.
statestringListing state; active for every exported listing.
urlstringLink to the listing, without tracking parameters.
mainImageUrlstringFirst listing photo, full size.
imagesarrayAll listing photo URLs, full size, in the seller order.
createdAtstringWhen the listing was first created (UTC, ISO 8601).
updatedAtstringWhen the listing was last changed (UTC, ISO 8601).
sourcestringAlways etsy-open-api-v3.
fetchedAtstringWhen the Actor read the listing (UTC, ISO 8601).
messagestringExplanation on the api_key_required row; null on listings.
Input settings (10)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Etsy API keystringapiKeystring
Etsy shared secretsharedSecretstring
What to exportmodestring"search"
Keyword searcheskeywordsarray["handmade mug"]
Shop namesshopNamesarray
Max listings per search or shopmaxItemsinteger10
Sort bysortBystring"relevance"
Min priceminPricenumber
Max pricemaxPricenumber
Shop locationshopLocationstring

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure