# Etsy Scraper (`automly/etsy-scraper`) Actor

Scrape Etsy listings by keyword, category, shop or link: title, price, discount, shop, ratings, reviews count, favorites, photos, variations, materials, shipping and badges, plus shop details and shop reviews. No login.

- **URL**: https://apify.com/automly/etsy-scraper.md
- **Developed by:** [Automly](https://apify.com/automly) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.10 / 1,000 listing with full details

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Etsy Scraper - Listings, Prices, Shops & Reviews

### What is Etsy Scraper?

**Etsy Scraper** is a tool that lets you **scrape listings, shops and reviews from Etsy** search results, categories and shops: title, price, sale price and discount, shop name and rating, item rating and review count, favorites, photos, variations, materials, shipping, delivery estimate, Bestseller and Star Seller badges, plus **shop details** (sales, admirers, rating, location) and **shop reviews**. Add a keyword or any Etsy link, click **Start**, and download the data as Excel, CSV or JSON.

- ⚡ **Fast:** 300 listings with full details in about a minute and a quarter, 1,000 search results in about two minutes (our tests)
- 🔎 **Search filters:** price range, ships-to country, free shipping and sort order, in 20 currencies
- 🔗 **Any link, any mix:** keywords, search pages, categories, shops, listings and etsy.me short links in one run
- 🔓 **No login:** no Etsy account needed
- 💸 **Free to try:** the $5 of free usage every Apify account gets each month covers about 1,600 listings with full details

### What can Etsy Scraper do?

- **Scrape Etsy search results** for any keyword, like `ceramic mug` or `personalized necklace`, sorted by relevance, price, newest or top reviews
- **Scrape every listing in an Etsy shop**, with the shop's sales, admirers, rating, owner and location
- **Scrape Etsy categories** such as `etsy.com/c/jewelry/necklaces`
- **Scrape single Etsy listings** from their links, including etsy.me short links and country versions (`etsy.com/uk/...`)
- **Get Etsy product details**: description, all photos, variations and their options, materials, highlights, favorites, item rating and review count, shipping origin, delivery estimate and return policy
- **Scrape Etsy shop reviews**: star rating, text, date, reviewer, the item bought and the seller's reply
- **Monitor Etsy prices and discounts** of competitors' listings over time
- Export to Excel, CSV, JSON, HTML or XML, or send the data to Google Sheets, Make, Zapier and more

### What data can you extract from Etsy?

| | | |
|---|---|---|
| 🏷️ Title and link | 💲 Price, sale price, discount % | 💱 Currency of your choice |
| ⭐ Item rating and review count | ❤️ Favorites | 🛒 People with it in their cart |
| 🏆 Bestseller, Star Seller, Etsy's Pick | 📢 Ad flag in search | 🚚 Free shipping and ships from |
| 📅 Delivery estimate and listing date | ↩️ Return policy | 🖼️ All photos in full size |
| 📝 Description and highlights | 🧵 Materials | 🎛️ Variations and options |
| 🗂️ Category and category path | 🏪 Shop name, rating, reviews, sales, location | 💬 Shop reviews with the item bought |

### How to scrape Etsy

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open **Etsy Scraper**.
3. Enter search keywords, or paste Etsy search, category, shop or listing links, one per line.
4. Set how many listings you want per keyword or link, pick filters if you need them, and choose whether to include full listing details and shop reviews.
5. Click **Start**, then download the results as Excel, CSV, JSON or HTML.

### How much does it cost to scrape Etsy listings?

You pay per row saved. A listing with full details (the default) costs more than a listing from a search, category or shop list alone (with **Include full listing details** turned off). Shops and shop reviews have their own prices:

| Apify plan | Listings with full details per 1,000 | Listings from a list only per 1,000 | Reviews per 1,000 | Shops per 1,000 |
|---|---|---|---|---|
| Free | $3.00 | $1.00 | $1.00 | $3.00 |
| Starter (Bronze) | $2.70 | $0.90 | $0.90 | $2.70 |
| Scale (Silver) | $2.40 | $0.80 | $0.80 | $2.40 |
| Business (Gold) and higher | $2.10 | $0.70 | $0.70 | $2.10 |

Platform usage is included in these prices, so you pay nothing else for the run.

Example: 1,000 listings with full details cost $3.00 on the Free plan and $2.10 on Business. The same 1,000 listings without full details cost $1.00 on the Free plan.

Every Apify account gets **$5 of free usage each month**, enough for about 1,600 listings with full details. See the **Pricing** tab for details.

### ⬇️ Input

| Setting | What it does |
|---|---|
| **Search keywords** | Words to search Etsy for, like `ceramic mug` |
| **Etsy links** | Any mix of search pages (`https://www.etsy.com/search?q=wall+art`), categories (`https://www.etsy.com/c/jewelry/necklaces`), shops (`https://www.etsy.com/shop/NordicPottery`), listings (`https://www.etsy.com/listing/990762977/...`) and `etsy.me` short links. A listing ID or a shop name on its own works too |
| **Max listings per search, category or shop** | How many listings to save for each keyword or link (default 50). Set 0 for all of them |
| **Include full listing details** | Adds each listing's description, all photos, variations, materials, favorites, item rating, shipping and more (on by default). Turn off for a faster, cheaper list. Listing links always get full details |
| **Sort by, Min price, Max price, Ships to country, Free shipping only** | Search filters for keywords and search links |
| **Currency** | The currency prices are shown in (USD by default) |
| **Include shop reviews / Max reviews per shop** | Also saves the reviews of each shop you give, and of the shop of each listing link |
| **Connection settings** | The default works for most runs |

Listings for two keywords, cheapest first, under $40, shipping free to the US:

```json
{
  "searchQueries": ["ceramic mug", "linen apron"],
  "maxItems": 200,
  "sortBy": "price_asc",
  "maxPrice": 40,
  "shipTo": "US",
  "freeShipping": true
}
```

A whole shop with its details and latest 300 reviews:

```json
{
  "startUrls": ["https://www.etsy.com/shop/NordicPottery"],
  "maxItems": 0,
  "includeReviews": true,
  "maxReviews": 300
}
```

A quick price list of a category, in euros, without full details:

```json
{
  "startUrls": ["https://www.etsy.com/c/jewelry/necklaces"],
  "maxItems": 500,
  "includeDetails": false,
  "currency": "EUR"
}
```

### ⬆️ Output

Every listing is one row. A shop link also gives one shop row, and every review is a row of its own; the `type` field says which. A listing from a search with full details on:

```json
{
  "type": "listing",
  "id": "4380598875",
  "url": "https://www.etsy.com/listing/4380598875/handpainted-custom-house-portrait",
  "title": "Handpainted Custom House Portrait Ceramic Coffee Mugs Personalized Colorful Rustic Shop Coffee Tea Drinkware Microwaveable Anniversary Gifts",
  "price": 57.8,
  "originalPrice": 85.0,
  "discountPercent": 32,
  "currency": "USD",
  "rating": 5.0,
  "reviewCount": 4,
  "favorites": 1666,
  "inCarts": 20,
  "isAd": true,
  "isBestseller": true,
  "isStarSeller": true,
  "isEtsyPick": true,
  "freeShipping": true,
  "shopName": "LycheeCeramicUs",
  "shopId": "52061210",
  "shopUrl": "https://www.etsy.com/shop/LycheeCeramicUs",
  "shopRating": 4.9,
  "shopReviewCount": 849,
  "shopSales": 4700,
  "shopLocation": "United States",
  "image": "https://i.etsystatic.com/52061210/r/il/988f81/7301303503/il_fullxfull.7301303503_e202.jpg",
  "images": ["https://i.etsystatic.com/52061210/r/il/988f81/7301303503/il_fullxfull.7301303503_e202.jpg", "..."],
  "description": "Personalized Photo Ceramic Mugs: A Cherished Keepsake for Every Moment ...",
  "highlights": ["Materials: Ceramic"],
  "materials": ["Ceramic"],
  "variations": [{"name": "Style", "options": ["Single Color", "Watercolor"]}],
  "personalizable": true,
  "availability": "InStock",
  "shipsFrom": "Redwood City, CA",
  "deliveryEstimate": "Oct 24-Nov 12",
  "returns": "Returns & exchanges accepted within 14 days",
  "category": "Mugs",
  "categoryPath": ["Home & Living", "Kitchen & Dining", "Drink & Barware", "Drinkware", "Mugs"],
  "listedOn": "2026-09-27",
  "position": 225,
  "source": "ceramic mug",
  "scrapedAt": "2026-10-02T01:54:45Z"
}
```

A shop row:

```json
{
  "type": "shop",
  "id": "17615171",
  "url": "https://www.etsy.com/shop/NordicPottery",
  "title": "SCANDINAVIAN DESIGN + CRAFTSMANSHIPMade in Sweden",
  "shopName": "NordicPottery",
  "rating": 5.0,
  "reviewCount": 486,
  "sales": 3845,
  "admirers": 5873,
  "listingCount": 7,
  "location": "Falköping, Sweden",
  "onEtsySince": 2018,
  "lastActive": "2026-09-28",
  "owner": "Astrid"
}
```

A review row has `rating`, `text`, `date`, `buyerName`, `buyerUrl`, the item bought (`title`, `url`, `listingId`, `image`), `sellerResponse` and the shop.

The **Overview** tab lists every row with its image, title, price, rating and shop; **All fields** shows every column.

### Which fields come with which input?

| Field | Search, category, shop | With full details or a listing link |
|---|---|---|
| Title, link, price, sale price, discount, image, shop, badges, free shipping | ✅ | ✅ |
| Shop rating and review count | search and category (a shop link has them in its shop row) | ✅ |
| Item rating and review count, favorites, all photos | | ✅ |
| Description, highlights, materials, variations | | ✅ |
| Ships from, delivery estimate, returns, category, listing date | | ✅ |

The item rating and review count are the listing's own; the shop rating covers all the shop's items. Listings with no reviews yet have `reviewCount` 0 and no `rating`.

### How can I use Etsy data?

- **Product research:** find what sells in a niche, at which prices, and which listings carry Bestseller badges
- **Price monitoring:** track competitors' prices, sales and discounts over time
- **Shop analysis:** compare shops by sales, admirers, ratings and catalog size
- **Trend spotting:** see which listings collect the most favorites and reviews
- **Review analysis:** read what buyers say about a shop and its items
- **Lead lists:** collect shops in a category with their location and owner name

### How many listings can I get?

Shops and categories are read to the end or to your limit. A search shows up to about 250 pages on Etsy; for very broad keywords, add more specific keywords or filters (price ranges, ships-to country) to cover more listings. A listing that appears twice in one search is saved once.

### Scrape more e-commerce data

| Actor | What it gets |
|---|---|
| [eBay Scraper](https://apify.com/automly/ebay-scraper) | eBay listings across 8 marketplaces: prices, shipping, condition, seller ratings |
| [Shopify Products Scraper](https://apify.com/automly/shopify-products-scraper) | The product catalog of any public Shopify store: prices, variants, stock |
| [Amazon Products Scraper - Fast & Efficient (with Sales Data)](https://apify.com/automly/amazon-products-scraper---fast-efficient-with-sales-data) | Amazon products with price, BSR, variants, reviews and monthly sales estimates |
| [Amazon Reviews Scraper - Ratings, Verified Purchases & Images](https://apify.com/automly/amazon-reviews-scraper) | Amazon customer reviews with rating, text, date and verified purchase badge |
| [Walmart Scraper - Products, Prices, Stock & Reviews](https://apify.com/automly/walmart-scraper) | Walmart products with price, stock, seller and reviews |

### ❓FAQ

#### How much does it cost to scrape Etsy?

From $3.00 per 1,000 listings with full details on the Free plan, with cheaper rows for listings without details and for reviews. See the **How much does it cost to scrape Etsy listings?** section above. **Max listings** and **Max reviews** keep a run's cost under control, and you can also set a maximum cost per run.

#### How many Etsy listings can I scrape?

Shops and categories are read to the end or to your limit. Etsy shows up to about 250 pages of results for one search, so split very broad keywords into narrower ones or add price and ships-to filters to cover more.

#### Can I get the reviews of one listing?

Reviews come per shop: each review names the item bought (`listingId`, `title`, `url`), so you can filter a shop's reviews down to one item. Every listing row also has its own rating and review count.

#### Does it show listing tags?

Etsy no longer shows a listing's tags on its pages, so they are not in the data. Materials, highlights, category and variations are.

#### Can I pick the currency or the country?

Yes. Choose the **Currency**, and use **Ships to country** to keep only listings that ship there. Delivery estimates are for the United States.

#### Do I need an Etsy account?

No. The scraper gets the same public listings, shops and reviews anyone can see without signing in. You don't need an Etsy account, cookies or an API key.

#### What happens with a removed listing or a wrong link?

The run goes on with the other inputs, and the run report lists the listings and shops that do not exist (or are no longer available). A listing that disappears from a search before it is opened keeps its search row. A link that is not an Etsy search, category, shop or listing is named in the error message before the run starts.

#### Can I call it as an API?

Yes. Run it through the Apify API from any language, or use its real-time API (`/search?q=...`, `/listing?url=...` and `/shop?url=...`), which answers with the rows directly without starting a run.

#### Can I connect Etsy Scraper to other tools or AI agents?

Yes. Start runs and download results with the Apify API or the Python and JavaScript clients, send results to Make, Zapier, n8n, Google Sheets or Slack with Apify integrations and webhooks, or let AI assistants and agents run it through the Apify MCP server at [mcp.apify.com](https://mcp.apify.com).

#### Is it legal to scrape Etsy?

This scraper only collects public data that anyone can see on Etsy without signing in. Shop owner names and buyer names in reviews are personal data, which may be protected by laws such as GDPR, so only scrape them for a legitimate reason, respect copyright when you reuse photos and descriptions, and ask a lawyer if you are unsure. You can read more in [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

Etsy Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by Etsy.

#### Something isn't working?

Open an issue in the **Issues** tab with your input and what you expected, or ask for a field you need. We read every one and usually reply within a day.

### ⭐ Your feedback

Have an idea or found a problem? Tell us in the **Issues** tab. If Etsy Scraper saved you time, a short review on the **Reviews** tab helps other people find it.

# Actor input Schema

## `searchQueries` (type: `array`):

Enter what to search Etsy for, one per line ("ceramic mug", "personalized necklace"). Each keyword gives its own list of listings, filtered by the options below.

## `startUrls` (type: `array`):

Paste Etsy links in any mix: search pages (etsy.com/search?q=...), category pages (etsy.com/c/...), shops (etsy.com/shop/...), listings (etsy.com/listing/...) and etsy.me short links. Country versions (etsy.com/uk/..., /de/...) work too. A listing ID or a shop name on its own works as well.

## `maxItems` (type: `integer`):

How many listings to save from each keyword, search link, category or shop. Set 0 for all of them (Etsy shows up to about 250 pages of a search).

## `includeDetails` (type: `boolean`):

Open every listing for its description, all photos, variations, materials, highlights, favorites, item rating and review count, shipping, delivery estimate, return policy, category and listing date. Turn off for a faster, cheaper list with title, price, discount, shop, shop rating, image and badges. Listing links always get full details.

## `sortBy` (type: `string`):

The order of search results (keywords and search links).

## `minPrice` (type: `integer`):

Only listings that cost at least this much (in the currency below).

## `maxPrice` (type: `integer`):

Only listings that cost at most this much (in the currency below).

## `shipTo` (type: `string`):

A two-letter country code (US, GB, DE, CA, AU, ...): only listings that ship there.

## `freeShipping` (type: `boolean`):

Only listings with free shipping.

## `currency` (type: `string`):

The currency prices are shown in.

## `includeReviews` (type: `boolean`):

Also save the reviews of each shop you give (and of the shop of each listing link): rating, text, date, reviewer, the item bought and the seller's reply.

## `maxReviews` (type: `integer`):

How many reviews to save for each shop, newest first. Set 0 for all of them.

## `proxyConfiguration` (type: `object`):

Apify Proxy works out of the box.

## Actor input object example

```json
{
  "searchQueries": [
    "ceramic mug"
  ],
  "startUrls": [
    {
      "url": "https://www.etsy.com/shop/NordicPottery"
    }
  ],
  "maxItems": 20,
  "includeDetails": true,
  "sortBy": "relevance",
  "freeShipping": false,
  "currency": "USD",
  "includeReviews": false,
  "maxReviews": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `results` (type: `string`):

No description

## `report` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "ceramic mug"
    ],
    "startUrls": [
        {
            "url": "https://www.etsy.com/shop/NordicPottery"
        }
    ],
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automly/etsy-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQueries": ["ceramic mug"],
    "startUrls": [{ "url": "https://www.etsy.com/shop/NordicPottery" }],
    "maxItems": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("automly/etsy-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "ceramic mug"
  ],
  "startUrls": [
    {
      "url": "https://www.etsy.com/shop/NordicPottery"
    }
  ],
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call automly/etsy-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automly/etsy-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/OBcGQf9AIZHAwTzZJ/builds/7eT0RoqVB6a5rD5oC/openapi.json
