# Etsy Keyword Research Tool: Sales, Competition & Top Tags (`epicscrapers/etsy-keyword-research`) Actor

Turn a seed into hundreds of Etsy long-tail keywords, each scored on sales rate, recent sales, competition and buyer intent, with the tags top listings use. 16 countries in their own language. No login or subscription. $4 per 1,000 keywords.

- **URL**: https://apify.com/epicscrapers/etsy-keyword-research.md
- **Developed by:** [Epic Scrapers](https://apify.com/epicscrapers) (community)
- **Categories:** E-commerce, SEO tools, Automation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 keyword scoreds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 Keyword Research Tool: long-tail keywords scored on sales, competition and top tags

Etsy Keyword Research turns a product idea into hundreds of long-tail Etsy keywords and scores each one on what shoppers are doing right now. For every keyword you get how fast its top listings sell, how many of them sold this week, how entrenched the competition is, where the niche prices, and the tags the top listings share. Each run also builds a visual dashboard you can hand to a client or a team.

- **Measured, not estimated.** Review and favorite counts, last sale dates, the "bought in the last 24 hours" message, Bestseller and Star Seller badges, shop sales and listing counts come straight from Etsy. Every keyword row carries its top 10 listings as evidence.
- **Hundreds of keywords per seed.** Each seed is expanded through Etsy's own autosuggest, plus the seed followed by every letter A–Z, so `leather wallet` returns `leather wallet slim`, `leather wallet bi fold`, `leather wallet engraved name` and so on. Up to 500 keywords per seed and 50 seeds per run.
- **The tags winners use.** The 13 tags of every top listing are counted per keyword, and the dashboard's listing builder turns your best keywords into a title and 13 tags.
- **16 Etsy markets.** US, UK, Canada, Australia, Germany, France, the Netherlands, Spain, Italy and more, each with its own suggestions in its own language and the results shoppers there see.
- **Pay per keyword, no subscription.** $4 per 1,000 keywords. No Etsy account, API key, browser extension or proxy setup. Export to JSON, CSV, Excel or Google Sheets, or pull it through the API.

![Dashboard overview: summary cards, shortlists, opportunity map and keyword details](https://api.apify.com/v2/key-value-stores/SVTYSfjwvJaYnghRK/records/dashboard-overview.png)

**Scope:** This actor researches keywords. For every listing of a search (thousands per keyword, with sales dates and tags), use [Etsy Scraper](https://apify.com/epicscrapers/etsy-scraper). For a known shop's catalog and reviews, use [Etsy Shop Scraper](https://apify.com/epicscrapers/etsy-shop-scraper).

### What can you do with it?

| Goal                                 | How                                                                                                                 |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------- |
| Find underserved niches              | Add 10–50 seeds, sort by `opportunityScore`, and filter to small niches (`listings` under 10,000) that sell.        |
| Write titles and tags that rank      | Draft them in the dashboard's listing builder from your best keywords and the tags top sellers agree on.            |
| Check if a new shop can break in     | Look for `newcomers rank` in the verdict: a high `newListingsPct` means Etsy still ranks listings under a year old. |
| Print-on-demand and digital research | Sweep many seeds and filter by `digitalPct`, price and competition to find designs worth making.                    |
| Track a niche week by week           | Schedule a task and compare `reviewsPerMonth`, `soldLast7DaysPct` and `opportunityScore` per keyword over time.     |
| Expand to another country            | Run the same seeds in the seller's language for each market and compare demand, competition and prices.             |
| Client reports for agencies          | Send each client the run's `dashboard.html`, or print it to PDF.                                                    |
| Feed your own tools or AI agents     | Pull the dataset through the API, or connect Make, Zapier, n8n or Google Sheets.                                    |

### How it compares

| What you need            | Etsy Keyword Research                                           | Typical keyword tools and subscriptions  |
| ------------------------ | --------------------------------------------------------------- | ---------------------------------------- |
| Keywords per seed        | Up to 500 (autosuggest plus A–Z expansion)                      | Autosuggest only, often capped per run   |
| Demand signal            | Sales rate from reviews, 7/30-day and 24-hour sales             | Modeled search volume or sales estimates |
| Evidence behind a score  | Top 10 listings per keyword with reviews, last sale, shop sales | A score, sometimes niche averages        |
| Tags of the top listings | Counted per keyword, plus a title and 13-tag builder            | Rarely, or one listing at a time         |
| Countries                | 16 markets, local language suggestions and results              | Usually US only                          |
| Raw data                 | Every field as JSON, CSV, Excel or API                          | Limited exports, mostly dashboards       |
| Price                    | $4 per 1,000 keywords                                           | Monthly plan                             |

Etsy doesn't publish keyword search volume, so every "searches per month" number you see elsewhere is a model. This actor reports what Etsy does publish and shows the listings behind every number, so you can check any score yourself.

### Quick start

1. Click **Try for free** and sign in to Apify.
2. Add a seed to **Seed keywords**, for example `leather wallet`. Short product ideas work best.
3. Pick the **Country** you sell to. Write seeds in that country's language (`geldbörse` for Germany).
4. Click **Start**. A 50-keyword run takes about 1.5 minutes and costs $0.20.
5. Open the **Output** tab: the **Dashboard** link opens the visual report, and the dataset has every number.

```json
{
    "seeds": ["leather wallet"],
    "country": "US",
    "maxKeywordsPerSeed": 50
}
```

### The dashboard

Every run saves `dashboard.html` to its key-value store and links it in the **Output** tab. It's one self-contained file that works offline and on a phone, so you can download it, email it or print it to PDF.

- **Summary cards:** keywords scored, "Go" verdicts, easy wins (demand 50+ and competition under 40), the typical price and the best opportunity. They follow the filters.
- **Filters:** search, seed, grade, verdict, intent, maximum competition, maximum listings, price range and signals such as "small niche" or "newcomers rank". Every section of the page follows them.
- **Shortlists:** ready answers to "what should I make?": easy wins, selling now, small niches and biggest demand.
- **Opportunity map:** every keyword by demand and competition with the sweet spot shaded, or by sales rate and listings in search. Hover a dot for its numbers, click it for details.
- **Keyword details:** the score breakdown; demand, competition and price figures with where each comes from; the price range; the tags the top listings share; and the top 10 listings you'd compete with, with reviews, last sale and shop sales, each linked to Etsy.
- **Listing builder:** click keywords into a title (140-character counter) and tags into a set of 13 (20 characters each), then copy both.
- **Keyword table:** sortable, with checkboxes to focus the listing builder and the export. **Copy keywords** and **Export CSV** use the checked or filtered keywords.

![Keyword details: demand, competition and price figures, shared tags and the top listings](https://api.apify.com/v2/key-value-stores/SVTYSfjwvJaYnghRK/records/dashboard-keyword-detail.png)

![Keyword table with grade, opportunity, demand, competition, listings, reviews per month, sales, price and verdict](https://api.apify.com/v2/key-value-stores/SVTYSfjwvJaYnghRK/records/dashboard-keyword-table.png)

The page shows the 2,000 best keywords of a run; the dataset always has all of them.

### What data can you extract?

Every row is one keyword. Demand, badge and shop figures come from the keyword's top organic listings (10 by default). Price, sale and ad figures come from the first results page.

| Group       | Fields                                                                                                                                                                                                                     |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Keyword     | `keyword`, `country`, `seed`, `source` (`seed`, `suggestion`, `alphabet`, `depth-2`), `suggestPosition`, `intent`, `searchUrl`                                                                                             |
| Scores      | `opportunityScore`, `grade`, `demandScore`, `competitionScore`, `verdict`                                                                                                                                                  |
| Demand      | `reviewsPerMonth`, `favoritesPerMonth`, `soldLast7DaysPct`, `soldLast30DaysPct`, `inDemandPct`, `boughtLast24hTotal`, `avgFavorites`; cart counts `medianInCart`, `avgInCart`, `totalInCart`, `withCartsPct`               |
| Competition | `listings`, `bestsellerPct`, `starSellerPct`, `newListingsPct`, `medianListingAgeDays`, `medianShopSales`, `medianShopReviews`, `avgShopRating`, `medianListingReviews`, `adsOnFirstPage`, `adDensityPct`                  |
| Price       | `typicalPriceLow`, `typicalPriceHigh`, `medianPrice`, `avgPrice`, `minPrice`, `maxPrice`, `onSalePct`, `priceBuckets`                                                                                                      |
| Niche       | `category`, `subcategory`, `categoryPath`, `categoryFocusPct`, `digitalPct`, `personalizablePct`, `handmadePct`, `vintagePct`, `freeShippingPct`, `etsysPickPct`                                                           |
| Tags        | `topTags` (tag and count), `topTagsText`                                                                                                                                                                                   |
| Evidence    | `topListings`: rank, title, URL, price, `inCartCount`, `boughtLast24h`, `reviews`, `favorites`, `lastSaleAt`, `createdAt`, `isBestseller`, `shopName`, `shopSales`, all 13 `tags`; `sampledListings`, `organicOnFirstPage` |

### How the score works

All scores are 0–100 and computed from the row's own numbers:

- **Demand** = 30 × reviews per month (median of the top listings, each listing's reviews over its age; log scale, 20 = full) + 15 × favorites per month (log scale, 200 = full) + 20 × share sold in the last 7 days + 10 × share sold in the last 30 days + 15 × share with Etsy's "bought in the last 24 hours" message + 10 × autosuggest position. Reviews follow orders, so reviews per month tracks how fast a listing sells.
- **Competition** = 40 × listing count (log scale, 1M = full) + 15 × Bestseller share + 15 × Star Seller share + 20 × median shop sales (log scale, 100k = full) + 10 × ad share on page 1, then reduced by up to 30% when new listings rank.
- **Opportunity** = 0.55 × Demand + 0.45 × (100 − Competition).

Grades: A 80+, B 65–79, C 50–64, D 35–49, F below 35. The verdict (Go, Maybe, Risky, Skip) agrees with the scores and adds tags such as `selling daily`, `newcomers rank`, `small niche`, `price war`, `ad heavy`, `digital` and `broad search`.

Healthy, busy niches score mostly C, and A is rare. Compare keywords within a run rather than chasing a grade.

### Research at scale

#### Sweep many seeds in one run

Up to 50 seeds and 500 keywords per seed. Keywords found by several seeds are scored once. A run does about 2,000 keywords per hour; for bigger runs, raise the run timeout in the run options.

#### Track niches with scheduled runs

1. Set your seeds and country, then click **Save as a new task**.
2. In Apify Console, go to **Schedules**, click **Create new**, pick a time (for example weekly on Monday at 06:00) and add the task. See [Schedules](https://docs.apify.com/platform/schedules).
3. Connect Google in the task's **Integrations** tab to append every run to Google Sheets, or use Make, Zapier or n8n.

Every row has `keyword`, `country` and `scrapedAt`, so runs join easily:

- **Demand trend:** `reviewsPerMonth` and `soldLast7DaysPct` per keyword over time.
- **Rising keywords:** keywords whose `opportunityScore` climbs run after run.
- **New keywords:** keywords that appear in Etsy's autosuggest for the first time.
- **Saturation:** `listings` and `newListingsPct` per keyword over time.

| Use case                            | Frequency       | Cron expression |
| ----------------------------------- | --------------- | --------------- |
| Niche and trend tracking            | Weekly (Monday) | `0 6 * * 1`     |
| Seasonal launches (Q4, holidays)    | Daily           | `0 6 * * *`     |
| Quarterly market review per country | Every 3 months  | `0 6 1 */3 *`   |

#### One task per market

Create a task per country with the seeds in that market's language, for example `["leather wallet"]` for US and GB, `["geldbörse leder"]` for DE, and `["portefeuille cuir"]` for FR. Prices are always in USD, so markets compare directly.

#### Use it from code

```bash
curl -X POST "https://api.apify.com/v2/acts/epicscrapers~etsy-keyword-research/run-sync-get-dataset-items?maxTotalChargeUsd=1" \
  -H "Authorization: Bearer <YOUR_APIFY_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"seeds": ["leather wallet"], "country": "US", "maxKeywordsPerSeed": 100}'
```

`maxTotalChargeUsd` caps the cost of the run: the actor stops exactly at the limit and keeps everything collected. The dashboard is at `https://api.apify.com/v2/key-value-stores/<defaultKeyValueStoreId>/records/dashboard.html`. The actor also works with the [Apify API clients](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Input reference

| Field                | Type             | Default  | Effect                                                                                                                           |
| -------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `seeds`              | Array of strings | Required | Product ideas to expand, up to 50. Write them in the country's language.                                                         |
| `country`            | String           | `"US"`   | Etsy market: `US`, `GB`, `CA`, `AU`, `IE`, `NZ`, `DE`, `AT`, `CH`, `FR`, `BE`, `NL`, `ES`, `IT`, `PL`, `PT`. Prices stay in USD. |
| `maxKeywordsPerSeed` | Integer          | `50`     | Scored keywords per seed, 1–500. One row and one charge each.                                                                    |
| `alphabetExpansion`  | Boolean          | `true`   | Also expand the seed followed by each letter A–Z. Several times more long-tail keywords.                                         |
| `depth`              | Integer          | `1`      | `2` also expands every suggestion. Wider, and drifts further from the seed.                                                      |
| `listingsPerKeyword` | Integer          | `10`     | Top organic listings opened per keyword, 3–20. More gives steadier averages and takes longer; the price stays the same.          |

### Ready-to-run examples

#### Sweep a whole product line for gaps

```json
{
    "seeds": ["leather wallet", "leather belt", "leather keychain", "leather card holder", "leather journal"],
    "maxKeywordsPerSeed": 200
}
```

Up to 1,000 keywords for $4. In the dashboard, press the **small niche** filter and sort by opportunity.

#### Find print-on-demand designs

```json
{
    "seeds": ["funny cat shirt", "teacher sweatshirt", "dog mom hoodie"],
    "maxKeywordsPerSeed": 150
}
```

Sort by `opportunityScore`, then check `typicalPriceLow`–`typicalPriceHigh` and `topTags` for each design idea.

#### Research the German market

```json
{
    "seeds": ["geldbörse leder", "geldbörse personalisiert"],
    "country": "DE",
    "maxKeywordsPerSeed": 100
}
```

Suggestions, categories and tags come back in German; prices in USD.

#### Go deep on one niche

```json
{
    "seeds": ["engraved wallet"],
    "depth": 2,
    "maxKeywordsPerSeed": 300,
    "listingsPerKeyword": 15
}
```

Depth 2 expands every suggestion again, and 15 listings per keyword give steadier averages.

### Analyze the results with ChatGPT or Claude

Export the dataset as CSV (the **Opportunities** or **Top tags** view keeps it small) and attach it to a chat. Some prompts to start with:

**Pick a niche.** "These are scored Etsy keywords. Group them into product ideas, and for each idea give the best three keywords by `opportunityScore`, their `reviewsPerMonth`, `listings` and `typicalPriceLow`–`typicalPriceHigh`. Recommend one idea for a new shop and explain why."

**Write a listing.** "Using the keywords with the highest `opportunityScore` and the `topTagsText` column, write an Etsy title for \[your product] that starts with the strongest phrase, and 13 tags of at most 20 characters, all different."

**Plan a launch abroad.** "These are the same seeds researched in the US and Germany. Compare demand, competition and price per keyword pair, and list the keywords where Germany looks easier."

### Output

Results go to the run's default dataset, with the views **Opportunities**, **Demand**, **Competition** and **Top tags**, and to `dashboard.html` in the key-value store.

This is a real row from a `leather wallet` run on October 11, 2026, with fields, `topListings` and `topTags` shortened:

```json
{
    "keyword": "leather wallet engraved name",
    "country": "US",
    "seed": "leather wallet",
    "source": "alphabet",
    "suggestPosition": 6,
    "opportunityScore": 65,
    "grade": "B",
    "demandScore": 91,
    "competitionScore": 66,
    "verdict": "Go: real demand you can compete for (selling daily, selling now, price war)",
    "listings": 11498,
    "intent": "specific",
    "categoryPath": "Bags & Purses > Wallets & Money Clips > Wallets",
    "reviewsPerMonth": 26.03,
    "favoritesPerMonth": 101.9,
    "soldLast7DaysPct": 100,
    "soldLast30DaysPct": 100,
    "inDemandPct": 80,
    "boughtLast24hTotal": 43,
    "medianInCart": 1.5,
    "bestsellerPct": 90,
    "starSellerPct": 70,
    "newListingsPct": 30,
    "medianListingAgeDays": 1140,
    "medianShopSales": 23067,
    "adsOnFirstPage": 14,
    "organicOnFirstPage": 22,
    "typicalPriceLow": 18.8,
    "typicalPriceHigh": 32.55,
    "medianPrice": 19.89,
    "onSalePct": 100,
    "digitalPct": 0,
    "sampledListings": 10,
    "topTags": [
        {
            "tag": "engraved wallet",
            "count": 7
        },
        {
            "tag": "gift for dad",
            "count": 7
        },
        {
            "tag": "anniversary gift",
            "count": 6
        }
    ],
    "topListings": [
        {
            "rank": 1,
            "listingId": 4567689735,
            "title": "Ultra Soft Leather Wallet with Zip, Snap Buttons, Premium Italian Vegetable Tanned Card Wallet with Custom Engraved",
            "url": "https://www.etsy.com/listing/4567689735",
            "price": 56,
            "inCartCount": 193,
            "boughtLast24h": null,
            "reviews": 1,
            "favorites": 14,
            "lastSaleAt": "2026-10-08T22:14:37.000Z",
            "createdAt": "2026-09-03T00:45:44.000Z",
            "isBestseller": false,
            "shopName": "BighornHide",
            "shopSales": 13,
            "tags": ["Leather Fanny Pack", "Cowboy Belt Bag", "Men Sling Bag", "Full Grain Leather", "…"]
        }
    ],
    "searchUrl": "https://www.etsy.com/search?q=leather%20wallet%20engraved%20name&ship_to=US",
    "scrapedAt": "2026-10-11T16:37:35.494Z"
}
```

#### Notes on fields

- Fields ending in `Pct` are shares of the sampled top listings (`sampledListings`, 10 by default), except `adDensityPct`, `onSalePct` and `etsysPickPct`, which cover the first results page.
- `reviewsPerMonth` and `favoritesPerMonth` are medians over the top listings of each listing's total reviews (or favorites) divided by its age in months, at least one month. Reviews come from a share of buyers, so the rate tracks sales without being a sales count.
- Cart counts (`medianInCart` and related) are what Etsy's app reports. Since October 10, 2026 Etsy reports far lower numbers than before (most listings 0–3), so they aren't part of the score.
- `inDemandPct` and `boughtLast24hTotal` count Etsy's "N people bought this in the last 24 hours" message, which Etsy shows only on some in-demand listings. Other listings may also have sold that day.
- `listings` is Etsy's result count for the search, which includes loose matches.
- `priceBuckets` are Etsy's price filter steps for the search, the same $25 / $50 / $75 for most searches. `typicalPriceLow`–`typicalPriceHigh` (the middle half of page-1 prices) is the better guide to where a niche sells.
- `suggestPosition` is the keyword's position in the autosuggest list that surfaced it (1 = first).
- Prices are in US dollars for every country. Category names and tags are in the country's language.
- Missing values are `null`. Every row has `scrapedAt` in UTC.

### FAQ

#### Why no search volume?

Etsy doesn't publish it, so tools that show one are estimating. Review rates and recent sales show demand that is turning into orders, and `suggestPosition` shows how prominently Etsy suggests the keyword.

#### Why fewer keywords than my limit?

The limit is a maximum. Etsy suggests only so many searches for some seeds. Keywords without listings, and keywords whose top listings couldn't be loaded, are skipped and not charged. Turn on A–Z expansion, use depth 2 or add related seeds to get more.

#### How fresh is the data?

Every run reads Etsy live; nothing is cached between runs. Sales move daily, so schedule runs to follow a niche.

#### Does it work outside the US?

Yes, in 16 markets. Pick the country and write seeds in its language. The top listings for the same keyword differ completely between countries, so research the market you sell to.

#### How fast is it?

About 1.5 minutes per 50 keywords and roughly 2,000 keywords per hour. Raise the run timeout for bigger runs.

#### Why did my run stop early?

If the status says the spending limit was reached, the run hit its maximum cost. Everything scored before that is saved, and the dashboard covers it.

#### Do I need proxies, an Etsy account or an API key?

No. The actor handles connections and retries itself and doesn't log in.

#### Is it legal?

The actor reads publicly visible search and listing data and no buyer data. You are responsible for how you use it, including Etsy's terms and laws such as GDPR.

### Cost

Pay per scored keyword, with no subscription. Platform usage and proxies are included.

| Event          | Price    | Per 1,000 | Charged when                                                              |
| -------------- | -------- | --------- | ------------------------------------------------------------------------- |
| Keyword scored | $0.004   | $4        | A keyword is saved with its scores. Skipped and failed keywords are free. |
| Actor start    | $0.00005 | –         | Once per run (per GB of memory).                                          |

| Run                                         | Cost  |
| ------------------------------------------- | ----- |
| 1 seed, 50 keywords                         | $0.20 |
| 5 seeds × 200 keywords                      | $4    |
| 10 seeds × 100 keywords, weekly for a month | $16   |
| The same 200 keywords in 5 countries        | $4    |

Set a maximum cost per run and the actor stops exactly there. The **Pricing** tab always shows the current prices.

### Support

Report problems or request features in the **Issues** tab. Include the run ID, the input and what you expected. We read every issue.

This actor is not affiliated with or endorsed by Etsy, Inc. "Etsy" is a trademark of Etsy, Inc. eRank, EverBee and Marmalead are trademarks of their respective owners; this actor is not affiliated with them.

# Actor input Schema

## `seeds` (type: `array`):

One or more product ideas, e.g. "leather wallet". Each seed is expanded into the long-tail searches Etsy suggests, and every keyword is scored on live demand and competition.

## `country` (type: `string`):

The Etsy market to research. Suggestions come in the country's language, and listing counts and top listings are what shoppers there see. Write seeds in that language. Prices are always in USD.

## `maxKeywordsPerSeed` (type: `integer`):

Upper limit on scored keywords per seed (one row and one charge each). A seed returns fewer when Etsy suggests fewer.

## `alphabetExpansion` (type: `boolean`):

Also ask Etsy's autosuggest for the seed followed by each letter ("leather wallet a", "leather wallet b", …). Finds several times more long-tail keywords than the seed alone.

## `depth` (type: `integer`):

1 = suggestions for the seed. 2 = also suggestions for each suggestion (wider, and drifts further from the seed).

## `listingsPerKeyword` (type: `integer`):

How many of the top organic results are opened for sales, reviews, badges and tags. More gives steadier averages and takes longer; the price per keyword stays the same.

## Actor input object example

```json
{
  "seeds": [
    "leather wallet",
    "dog bandana"
  ],
  "country": "US",
  "maxKeywordsPerSeed": 50,
  "alphabetExpansion": true,
  "depth": 1,
  "listingsPerKeyword": 10
}
```

# Actor output Schema

## `dashboard` (type: `string`):

No description

## `keywords` (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 = {
    "seeds": [
        "leather wallet"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("epicscrapers/etsy-keyword-research").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 = { "seeds": ["leather wallet"] }

# Run the Actor and wait for it to finish
run = client.actor("epicscrapers/etsy-keyword-research").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 '{
  "seeds": [
    "leather wallet"
  ]
}' |
apify call epicscrapers/etsy-keyword-research --silent --output-dataset

```

## MCP server setup

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

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/56FBmxzytPgYEcWJ6/builds/7i52PBt2HJdTOypHj/openapi.json
