Etsy Listings Scraper - Search Results & URLs avatar

Etsy Listings Scraper - Search Results & URLs

Pricing

from $3.00 / 1,000 etsy listing returneds

Go to Apify Store
Etsy Listings Scraper - Search Results & URLs

Etsy Listings Scraper - Search Results & URLs

Discover publicly indexed Etsy listings from keywords. Returns validated IDs, canonical URLs, titles, snippets, indexed shop/rating metadata, and source context. Use for listing discovery—not live Etsy-page details, carts, ads, inventory, or reviews. $0.003 per listing plus usage.

Pricing

from $3.00 / 1,000 etsy listing returneds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Etsy Listings Scraper is an Apify Actor for discovering publicly indexed Etsy listings from keyword phrases. It accepts one or more search queries and returns one dataset record per validated listing, with a stable listing ID, canonical Etsy URL, title, optional indexed description snippet, indexed shop and rating metadata when available, and source context for each row. Use the returned records as a listing-discovery dataset for research, workflow routing, and downstream processing through Apify or Apify MCP.

The accepted input is keyword-based search discovery rather than an Etsy URL field. One returned record represents one discovered Etsy listing. Valuable output fields include listingId, listingUrl, title, description, rating, reviewCount, shopName, sourceQuery, sourceSearchUrl, resultPosition, scrapedAt, dataSource, and parseWarnings. The result is a structured, provenance-rich list of public search-index findings.

Best fit and connected workflows

This Actor fits workflows that start from product ideas, themes, or keyword lists and need stable Etsy listing URLs for the next step. It works well for:

  • keyword-based product discovery for ecommerce research
  • SEO and marketplace visibility checks from public search-index results
  • candidate list building before manual review or approved downstream enrichment
  • Apify automations that need a compact dataset of listing URLs and metadata
  • Apify MCP tool use when an agent needs structured Etsy listing discovery from keywords

The returned listingUrl and listingId make it straightforward to join results with your own approved internal systems, while sourceQuery and sourceSearchUrl preserve the discovery trail for each item.

Practical scenario

A marketplace analyst enters personalized leather journal as the starting keyword. The Actor returns records with listingUrl, title, shopName, rating, reviewCount, and resultPosition, plus sourceQuery and scrapedAt for provenance. The analyst uses rating and reviewCount to spot listings that deserve manual review, then opens the canonical listingUrl in a browser and moves the selected URLs into a separate research sheet.

Input

FieldTypePurpose
searchQueriesarray of stringsKeyword phrases for Etsy listing discovery. Defaults to handmade necklace and accepts up to 20 queries.
maxResultsintegerGlobal cap for validated listing records written to the dataset. Range: 1 to 200.
maxPagesPerQueryintegerLimits public search-index pages requested per query. Range: 1 to 10.
responseFormatstringconcise returns stable discovery fields only; detailed can include an indexed description snippet when available.
deduplicateAcrossQueriesbooleanKeeps the first occurrence of a listing ID across the current run when multiple queries surface the same listing.

Focused input example

{
"searchQueries": [
"handmade necklace",
"personalized leather journal"
],
"maxResults": 50,
"maxPagesPerQuery": 2,
"responseFormat": "concise",
"deduplicateAcrossQueries": true
}

Output

FieldTypePurpose
listingIdstringStable Etsy listing ID parsed from the canonical public URL.
listingUrlstringCanonical Etsy listing URL discovered in the public search index.
titlestringTitle shown by the public search index.
descriptionstring or nullIndexed search-result snippet when detailed output is requested and available.
ratingnumber or nullRating shown by the public search index when available.
reviewCountinteger or nullReview count shown by the public search index when available.
shopNamestring or nullShop or brand name shown by the public search index when available.
sourceQuerystringInput query that yielded the listing.
sourceSearchUrlstringPublic search-index URL used to discover the listing.
resultPositionintegerOne-based position in the parsed public search-index page.
scrapedAtstringISO 8601 timestamp for when the record was parsed.
dataSourcestringThe source route for the record, set to public-search-index.
parseWarningsarray of stringsNon-fatal field availability warnings for the record.

Illustrative output record

{
"listingId": "1775556485",
"listingUrl": "https://www.etsy.com/listing/1775556485/custom-charm-necklace",
"title": "Custom Charm Necklace",
"description": "Build your own necklace.",
"rating": 4.8,
"reviewCount": 1100,
"shopName": "GlamourJewels",
"sourceQuery": "handmade necklace",
"sourceSearchUrl": "https://search.yahoo.com/search?p=site%3Aetsy.com%2Flisting+handmade+necklace&b=1",
"resultPosition": 1,
"scrapedAt": "2026-07-15T12:00:00.000Z",
"dataSource": "public-search-index",
"parseWarnings": []
}

How it works

The Actor searches public search-index results for the supplied keyword phrases, parses Etsy listing links from those results, validates the discovered listing records, and writes them to the default dataset. Each persisted row is a public-search-index discovery record with source context. The default key-value store also contains OUTPUT for the compact execution contract and RUN_SUMMARY for source coverage, warnings, and charge information.

Pricing

This Actor uses Pay per event plus Apify platform usage.

  • Actor start: charged once per GB of configured actor memory when the Actor starts
  • Etsy listing returned: charged when one validated public-search-index Etsy listing record is written to the default dataset

The primary event is priced per validated listing returned. For example, if a run writes fifty validated listings, the listing event total is fifty times the per-listing charge, plus actor start charges and Apify platform usage. See the live Pricing tab in the Apify Console for the current pricing details.

Use with AI agents (MCP)

This Actor is available as an Apify Actor usable through Apify MCP. The tool is designed to turn keyword phrases into structured Etsy listing discovery records with provenance and stable URLs.

  • Actor identity: khadinakbar/etsy-listings-scraper
  • Tool purpose: discover publicly indexed Etsy listings from one or more keyword queries and return validated dataset rows for agent consumption
  • Scope: keyword-driven public search-index discovery only, with fields such as listingUrl, title, shopName, rating, reviewCount, sourceQuery, and sourceSearchUrl
  • Provenance: each output row carries dataSource: "public-search-index" and the originating query
  • Pagination and cost guidance: maxPagesPerQuery limits the number of public search-index pages requested per query, and maxResults caps the validated records written to the dataset and the primary event cost

Find publicly indexed Etsy listings for these keywords: handmade necklace, personalized leather journal. Return the canonical listing URL, title, shop name, rating, review count, and the source query for each result. Keep the output deduplicated across queries and preserve provenance for each row.

For agent workflows, read the default dataset after the execution completes. Use listingUrl as the stable handoff field, and use sourceSearchUrl when you need to trace the public search-index request that produced a record.

Apify API example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const run = await client.actor('khadinakbar/etsy-listings-scraper').call({
searchQueries: ['handmade necklace'],
maxResults: 10,
maxPagesPerQuery: 2,
responseFormat: 'concise',
deduplicateAcrossQueries: true,
});
const dataset = await client.dataset(run.defaultDatasetId).listItems();
console.log('Run output dataset items:');
console.log(dataset.items);

Best results and outcome guidance

Start with a small set of precise keyword phrases that reflect the product category you want to discover. If you want stable discovery fields, use responseFormat: "concise". If you want an indexed snippet when available, use responseFormat: "detailed". Keep maxResults aligned with the number of rows you want persisted, and use deduplicateAcrossQueries when several queries may surface the same listing.

Continue the workflow

Design note

I found that every dataset record always includes sourceQuery, sourceSearchUrl, resultPosition, scrapedAt, dataSource, and parseWarnings, which makes the dataset easy to trace back to the public search-index route that produced it.

FAQ

Can this Actor be used from an Apify MCP workflow?
Yes. It is an Apify Actor usable through Apify MCP for keyword-based Etsy listing discovery.

What should I send as input when I already have product ideas, not Etsy URLs?
Send keyword phrases in searchQueries, such as handmade necklace or printable wedding invitation.

Which field is suited to joining results to my own system?
listingId and listingUrl are the most useful stable fields for downstream joins.

When should I use concise versus detailed?
Use concise for stable discovery records, and detailed when you want the optional indexed description snippet that the public search index exposes.

How should I route results when I need source traceability?
Use sourceQuery and sourceSearchUrl together with dataSource to keep the discovery path attached to each listing.

Responsible use

Use this Actor for lawful, authorized listing discovery and for workflows that respect the terms governing your use of Etsy and any downstream systems. Review any public-search-derived record before making decisions that depend on current marketplace state.