Scrape Etsy listings, prices, tags, shop info, and 10 status flags via a simple REST API. 5,000 free requests/month.
- Search Etsy listings by keyword
- Get 20+ data points per listing (price, tags, categories, shop info, images, status flags)
- Favorites count, category path, and 10 boolean status flags per listing
- 5,000 requests/month on free tier
- Example Response:
{
"listing_id": "893790449",
"name": "Turquoise Ring, 925 Silver Ring, Handmade Ring, Gemstone Ring, Turquoise Jewelry, Boho Ring, Silver Band, Designer Band, Gift For Her",
"url": "https://www.etsy.com/listing/893790449/turquoise-ring-925-silver-ring-handmade",
"price": 40.0,
"price_usd": 40.0,
"currency": "USD",
"favorites_count": 0,
"tags": ["Turquoise Ring", "925 Silver Ring", "Handmade Ring", "Gemstone Ring"],
"categories": ["jewelry", "rings", "bands"],
"shop": {
"shop_id": 25231883,
"name": "newjewelshop"
},
"flags": {
"active": true,
"in_stock": true,
"sold_out": false,
"bestseller": false,
"made_to_order": false
}
}
Create an account at omkar.cloud to get your API key.
It takes just 2 minutes to sign up. You get 5,000 free requests every month for detailed Etsy data — more than enough for most users to get their job done without paying a dime.
This is a well built product, and your search for the best Etsy Scraper API ends right here.
curl -X GET "https://etsy-scraper.omkar.cloud/etsy/search?keyword=handmade%20ring" \
-H "API-Key: YOUR_API_KEY"
{
"result_count": 10000,
"listings": [
{
"listing_id": "893790449",
"name": "Aquamarine Ring, Crystal Ring, Dainty Handmade Ring, Handmade Ring, Boho Ring, Handmade Wire Ring, Simple Ring, Handmade Ring"
}
]
}
pip install requests
import requests
# Search for listings
response = requests.get(
"https://etsy-scraper.omkar.cloud/etsy/search",
params={"keyword": "handmade ring"},
headers={"API-Key": "YOUR_API_KEY"}
)
print(response.json())
GET https://etsy-scraper.omkar.cloud/etsy/search
| Parameter | Required | Default | Description |
|---|---|---|---|
keyword |
Yes | — | Search phrase to find matching Etsy listings. |
import requests
response = requests.get(
"https://etsy-scraper.omkar.cloud/etsy/search",
params={"keyword": "handmade ring"},
headers={"API-Key": "YOUR_API_KEY"}
)
print(response.json())
Sample Response (click to expand)
{
"result_count": 10000,
"listings": [
{
"listing_id": "893790449",
"name": "Aquamarine Ring, Crystal Ring, Dainty Handmade Ring, Handmade Ring, Boho Ring, Handmade Wire Ring, Simple Ring, Handmade Ring"
},
{
"listing_id": "949066317",
"name": "Dainty Handmade Ring, Handmade Ring, Boho Ring, Handmade Wire Ring, Simple Ring, Minimalist Ring, Hippie Ring, Handmade Band Ring"
},
{
"listing_id": "863456037",
"name": "Handmade Silver Ring, Handmade Ruby Ring, Handmade Sterling Silver Ring, Indian Handmade Ring,"
}
]
}
GET https://etsy-scraper.omkar.cloud/etsy/listing
| Parameter | Required | Default | Description |
|---|---|---|---|
listing_id |
Yes | — | Unique numeric identifier for the Etsy listing. |
import requests
response = requests.get(
"https://etsy-scraper.omkar.cloud/etsy/listing",
params={"listing_id": "893790449"},
headers={"API-Key": "YOUR_API_KEY"}
)
print(response.json())
Returns 20+ fields including price, tags, categories, shop info, images, 10 status flags, and timestamps.
Sample Response (click to expand)
{
"listing_id": "893790449",
"name": "Turquoise Ring, 925 Silver Ring, Handmade Ring, Gemstone Ring, Turquoise Jewelry, Boho Ring, Silver Band, Designer Band, Gift For Her",
"url": "https://www.etsy.com/listing/893790449/turquoise-ring-925-silver-ring-handmade",
"price": 40.0,
"price_usd": 40.0,
"currency": "USD",
"favorites_count": 0,
"tags": [
"Turquoise Ring",
"925 Silver Ring",
"Handmade Ring",
"Gemstone Ring",
"Turquoise Jewelry",
"Boho Ring",
"Silver Band",
"Designer Band",
"Gift For Her",
"Birthday Ring",
"Antique Ring",
"Anniversary Ring",
"Promised Ring"
],
"categories": [
"jewelry",
"rings",
"bands"
],
"images": {
"full": "https://i.etsystatic.com/25231883/r/il/706249/2665253237/il_fullxfull.2665253237_l9st.jpg",
"thumbnail": "https://i.etsystatic.com/25231883/d/il/706249/2665253237/il_75x75.2665253237_l9st.jpg?version=0"
},
"shop": {
"shop_id": 25231883,
"name": "newjewelshop",
"opened_at": null
},
"flags": {
"active": true,
"in_stock": true,
"sold_out": false,
"digital": false,
"made_to_order": false,
"bestseller": false,
"top_rated": false,
"featured": false,
"on_vacation": false,
"taxable": true
},
"listed_at": "2020-10-27T10:30:00+00:00",
"refreshed_at": "2020-11-12T09:41:06+00:00",
"last_crawled_at": "2020-12-25T17:26:39+00:00"
}
response = requests.get(
"https://etsy-scraper.omkar.cloud/etsy/search",
params={"keyword": "handmade ring"},
headers={"API-Key": "YOUR_API_KEY"}
)
if response.status_code == 200:
data = response.json()
elif response.status_code == 401:
# Invalid API key
pass
elif response.status_code == 429:
# Rate limit exceeded
pass
Search Listings returns total result count, listing ID, and name for each match.
Listing Details returns 20+ fields — listing name, URL, price in USD, currency code, favorites count, up to 12 tags, full category path, full-size image and thumbnail URLs, shop ID, shop name, shop opening date, 10 status flags (active, in stock, sold out, digital, made-to-order, bestseller, top rated, featured, on vacation, taxable), and timestamps for listing creation, last update, and last crawl.
All in structured JSON. Ready to use in your app.
Data is pulled from Etsy in real time. Every API call fetches live data — not cached or stale results. Prices, availability, tags, and status flags reflect what's on Etsy right now.
Yes. That's the intended workflow. Search for listings by keyword, grab the listing_id from any result, and pass it to the Listing Details endpoint to get the full breakdown.
The flags object gives you 10 boolean indicators about a listing's current state: active (live on Etsy), in_stock (available for purchase), sold_out (all inventory gone), digital (digital download), made_to_order (created after purchase), bestseller (Etsy bestseller badge), top_rated, featured (by shop owner), on_vacation (shop in vacation mode), and taxable.
| Plan | Price | Requests/Month |
|---|---|---|
| Free | $0 | 5,000 |
| Starter | $25 | 100,000 |
| Grow | $75 | 1,000,000 |
| Scale | $150 | 10,000,000 |
Reach out anytime. We will solve your query within 1 working day.


