Tutorial

How to Research Etsy Keywords with Scavio

Find high-intent Etsy listing keywords by combining Google SERP, Etsy autocomplete, and Reddit buyer threads through Scavio.

Etsy sellers chase the right keyword for titles and tags. Etsy's built-in research is limited to its autocomplete. This tutorial uses Scavio to combine Google SERP for Etsy results, Etsy autocomplete via SERP, and Reddit buyer threads to score keyword demand.

Prerequisites

  • Python 3.10+
  • A Scavio API key
  • A short list of seed keywords

Walkthrough

Step 1: Scrape Etsy results on Google

site:etsy.com query returns the currently ranking Etsy listings.

Python
import requests, os
API_KEY = os.environ['SCAVIO_API_KEY']

def etsy_serp(kw):
    r = requests.post('https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': API_KEY},
        json={'query': f'site:etsy.com {kw}', 'num_results': 20})
    return r.json().get('organic_results', [])

Step 2: Pull autocomplete suggestions

Google autocomplete for etsy queries reveals long-tail variants.

Python
def autocomplete(kw):
    r = requests.get(f'https://suggestqueries.google.com/complete/search?client=firefox&q=etsy+{kw}')
    return r.json()[1]

Step 3: Check Reddit buyer intent

r/Etsy and r/EtsyCommunity threads reveal what buyers actually ask.

Python
def reddit_intent(kw):
    r = requests.post('https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': API_KEY},
        json={'query': kw, 'platform': 'reddit', 'subreddit': 'Etsy'})
    return r.json().get('posts', [])

Step 4: Score each keyword

Combine SERP density, autocomplete width, and Reddit volume into a single score.

Python
def score(kw):
    s = len(etsy_serp(kw))
    a = len(autocomplete(kw))
    r_ = len(reddit_intent(kw))
    return s * 0.5 + a * 0.3 + r_ * 0.2

Step 5: Export a ranked list

Sort and save top candidates for title and tag rotation.

Python
seeds = ['personalized mug', 'handmade necklace', 'digital planner']
ranked = sorted(seeds, key=score, reverse=True)
print(ranked)

Python Example

Python
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']

def rank_etsy_keywords(seeds):
    out = []
    for kw in seeds:
        r = requests.post('https://api.scavio.dev/api/v1/search',
            headers={'x-api-key': API_KEY},
            json={'query': f'site:etsy.com {kw}', 'num_results': 20})
        out.append((kw, len(r.json().get('organic_results', []))))
    return sorted(out, key=lambda x: -x[1])

print(rank_etsy_keywords(['personalized mug', 'handmade necklace']))

JavaScript Example

JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
export async function rankEtsyKeywords(seeds) {
  const out = [];
  for (const kw of seeds) {
    const r = await fetch('https://api.scavio.dev/api/v1/search', {
      method: 'POST',
      headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
      body: JSON.stringify({ query: `site:etsy.com ${kw}`, num_results: 20 })
    });
    const d = await r.json();
    out.push([kw, (d.organic_results || []).length]);
  }
  return out.sort((a, b) => b[1] - a[1]);
}

Expected Output

JSON
Ranked keyword list with SERP density, autocomplete width, and Reddit volume scores. Ready for Etsy title and tag rotation.

Related Tutorials

Frequently Asked Questions

Most developers complete this tutorial in 15 to 30 minutes. You will need a Scavio API key (free tier works) and a working Python or JavaScript environment.

Python 3.10+. A Scavio API key. A short list of seed keywords. A Scavio API key gives you 500 free credits per month.

Yes. The free tier includes 500 credits per month, which is more than enough to complete this tutorial and prototype a working solution.

Scavio has a native LangChain package (langchain-scavio), an MCP server, and a plain REST API that works with any HTTP client. This tutorial uses the raw REST API, but you can adapt to your framework of choice.

Start Building

Find high-intent Etsy listing keywords by combining Google SERP, Etsy autocomplete, and Reddit buyer threads through Scavio.