Etsy Products Scraper

An Etsy listing,
as a row.

Paste Etsy listing URLs - etsy.com/listing/… - and each one comes back as a row: the name and description, the price and currency, availability, rating and reviews, the brand, the identifier columns, the images and a link. Seventeen columns, one row per product.

one-time 500 free rows$0.002 per row after17 columnsCSV · XLSX · JSON
How it works

A listing in,
a row out.

Two fields and that is the form - the listings you want, and how many products to take per query.

  1. STEP 1Sign in to the platform.
  2. STEP 2Open the Etsy Products Scraper.
  3. STEP 3Paste Etsy listing URLs, one per line - or upload a CSV, XLSX, TXT or Parquet file.
  4. STEP 4Set a limit per query, or leave it empty to take everything.
  5. STEP 5Click Get Data and download as CSV, XLSX or JSON.

The limit is per query, so a list of URLs multiplies - the estimator prices the run before it starts.

Why teams use it

A listing you can sort,
not a page you open.

Seventeen columns, not a blob

Price and currency arrive as separate fields, the identifier columns are their own, and the images are not buried in the description. That is what makes an export sortable and joinable rather than something you have to parse first.

Every row says how it went

There is a status column, and it is the one to read first. A row can arrive with all seventeen fields present and still be a failure notice rather than a product - which is far better than a silently empty cell, provided you look.

We say what we have not verified

The column names are solid. What we cannot yet tell you is what Etsy puts in them, or what separates the four near-duplicate pairs in the schema - so this page says so rather than filling the gap with plausible-sounding descriptions.

What this page can and cannot tell you

The names are confirmed.
The contents are not.

Worth reading before you plan around a column, because the evidence here is narrower than it first looks.

The seventeen column names are solid and confirmed twice over: by the column list this service declares, and by the keys of every run export we hold - the same seventeen, in the same order, with no eighteenth field. Worth noting for anyone moving between our services: there is no position field here, which several others do add to their JSON, and there is no service column either.

What we cannot do is tell you what Etsy puts in those columns, because neither run we hold is an Etsy run. Both submitted a placeholder address rather than a listing, and both came back with every content field empty and a status of http 404. That tells us the shape of the export and nothing whatever about Etsy's cells - so this page prints no example values and no formats.

There is one more gap worth naming rather than papering over. The schema carries four pairs that look like near-duplicates - sku_code and sku, product_url and url, price and parsed_price, images and image. All four pairs are really there. Without a populated row we genuinely cannot tell you what separates each pair, and guessing would be worse than useless if you built a schema on the guess. Take a small free-tier run and read those eight columns side by side; that answers it in a minute.

Data dictionary

Seventeen columns,
and one to read first.

The names are exact and doubly confirmed. Each entry says what the column is for - not what it will contain, because we have no populated Etsy run to describe.

query
The listing URL you submitted for this row, echoed back. Written by the scraper, so it is there on every row.
sku_code
A stock code for the item. Pairs with sku - see the note below; we cannot yet tell you what separates the two.
product_url
A link to the product. Pairs with url, and we cannot yet tell you which is which.
name
The product name as the listing declares it.
description
The listing description.
parsed_price
A price field. Pairs with price - the name suggests a processed form, but we have not seen a value and will not guess.
price
The other price field. Read it beside parsed_price on your first run before you decide which to use.
currency
The currency, as its own column - so you are not parsing a symbol out of a price field.
availability
The stock status the listing declares.
rating
The listing's rating, where one is published. No scale is stated here; we have not seen a value.
reviews
The review count. A number of reviews, not the review text - there is no review body in this export.
images
An images field. Pairs with image - plural against singular, which usually means a set against a primary, but we have not confirmed it.
brand
The brand the listing declares.
sku
The other stock-code field, alongside sku_code.
url
The other link field, alongside product_url.
image
The other image field, alongside images.
status
How the row itself went - read this one first. A row can carry all seventeen fields and still be a failure notice rather than a product.

Read status before you trust any other column. It is a per-row outcome, not a product attribute: both runs we hold came back with status of http 404 and every content field empty. The tool's own note explains the other case you will meet - products are fetched through a shared proxy pool, and anti-bot sites return a blocked status on the free pool, which makes them residential-only. So an empty-looking export is usually not a silent failure; it is a row telling you what happened, if you look. Two things this page will not do. It will not print example values or formats, because neither run we hold is an Etsy run - both submitted a placeholder address, so we know the shape and nothing about the cells. And it will not tell you what separates the four near-duplicate pairs (sku_code/sku, product_url/url, price/parsed_price, images/image), because that needs a populated row and a guess written here would be a guess you built on. Note also what is absent: no position field in the JSON, and no service column - both of which some of our other services do carry.

Run controls

A listing and a limit,
and that is the form.

Two fields. No sort and no filter - you name the listings and say how many products to take per query.

https://www.etsy.com/listing/… One per line CSV · XLSX · TXT · Parquet upload Limit per query, or empty for everything One row per product Every row carries a status
Common workflows

Three jobs people
most often run here.

What a set of listings is worth once it is a table.

Assortment

Read a set of listings side by side

Names, prices, ratings and review counts in one table is a different exercise from opening twenty listings in twenty tabs - and the identifier columns are what let you match the same item across places.

Merchandising · Research
Monitoring

Re-run the same listings and diff them

The same URLs on a schedule give you two comparable files. Price moves, availability changes and review counts climbing are a diff rather than an afternoon of clicking - and query reconciles each row against your input list.

Analysis · Reporting
Quality

Separate the misses from the data

Because every row carries a status, a run that came back thin can be triaged rather than guessed at. Filter on that column first and you know immediately which rows are products and which are notices.

Ops · Data quality
Pricing

Pay only for the products
you actually pull.

No subscription, no minimum, no recurring bill. Your first 500 rows are on us - after that, pay-as-you-go at the same flat rate as every other scraper here.

Free tier

500 free rows - $0

Every new account, one-time. No credit card required. Per-query limits, file upload and every export format included - and enough to answer the two questions this page leaves open on your own listings.

$0 forever
Pay-as-you-go

$0.002 per row, after the free tier

The same flat rate as every other scraper on the platform. The pre-flight estimator shows the row count and credit cost before a run starts - worth a glance, because the limit is per query and a list of URLs multiplies.

Most popular
Volume

Custom · high volume

Volume pricing, dedicated workers and an SLA for tracking a catalogue on a schedule. Tell us your numbers and we will quote.

Talk to us
10% off your first paid run.Use code LIVESCRAPER10 at checkout.
Sign up
Pairs well with

The same seventeen columns,
elsewhere.

This service shares its column set with a family of retailer scrapers. Two of them, and one for when the schema does not carry what you need.

The legal bit

Is it legal to scrape
Etsy listings?

Short answer: a public listing is public - but Etsy listings are made by small sellers, and the words and photographs are theirs.

Everything in these columns is shown on a public listing page to any visitor, signed in or not. No login is used, no paywall is crossed and no account is touched, and the run goes through our proxy pool rather than your own address. No person is named in the seventeen columns - there is no seller-name column and reviews is a count rather than review text, so no reviewer appears either.

The copyright side deserves more weight here than on a big-box catalogue. An Etsy listing is usually written and photographed by the individual selling the item. Collecting that copy and those images for analysis is one question; republishing them is a different one, and it is somebody's own work rather than a corporate marketing asset. Treat the description and image columns accordingly.

Etsy's own terms govern automated collection from their site, so read them before you scale rather than relying on the listings being public. We run no third-party trackers on the data layer, and your exports auto-delete after 30 days.

livescraper.app · principles
Public listing pages only
No logins, no accounts touched
No seller or reviewer is named
Listing copy and photos are a seller's own work!
Exports auto-delete (30 days)
Check Etsy's own terms before scaling.
Common questions

Things people
ask before signing up.

The questions we hear most. Anything else? Talk to us - humans, not bots, write the answers.

How do I scrape Etsy products?+
Using the Etsy Products Scraper: sign in to the platform, open the Etsy Products Scraper, paste Etsy listing URLs one per line (or upload a CSV, XLSX, TXT or Parquet file), set a limit per query or leave it empty to take everything, then click Get Data and download the result as CSV, XLSX or JSON.
What columns will I get?+
Seventeen, in this order: query, sku_code, product_url, name, description, parsed_price, price, currency, availability, rating, reviews, images, brand, sku, url, image and status. Those names are confirmed twice over - by the column list this service declares and by the keys of every run export we hold. Note there is no position field here and no service column, unlike some of our other scrapers.
What is the status column for?+
It records how the row itself went, and it is the one to read first. A row can arrive with all seventeen fields present and still be a failure notice rather than a product. Both runs we hold came back with a status of http 404 and every content field empty. The tool also notes that products are fetched through a shared proxy pool and that anti-bot sites return a blocked status on the free pool, which makes those residential-only - so an empty-looking export is usually a row telling you what happened rather than a silent failure.
Why does this page not show example values?+
Because neither run we hold is an Etsy run, and we would rather say so than invent them. Both submitted a placeholder address rather than a listing, so they confirm the column names and the shape of the export while telling us nothing about what Etsy puts in the cells. The names are solid; the contents are not something we can honestly describe yet.
Why are there two price columns, and two of several other things?+
The schema really does carry four near-duplicate pairs: sku_code and sku, product_url and url, price and parsed_price, and images and image. We cannot tell you what separates each pair, because we have no populated row to look at, and a guess written here is a guess you might build a schema on. Run a few of your own listings on the free tier and read those eight columns side by side - that answers it in a minute.
Can I set the limit to zero to take everything?+
No - this form is different from some of our others. The limit accepts a minimum of one, and the way to take everything is to leave the field empty rather than to enter zero. It defaults to a hundred per query.
Does it return review text?+
No. The reviews column is a count of how many reviews a listing has, not the reviews themselves. There is no reviewer name and no review body anywhere in these seventeen columns.
How much does it cost?+
The first 500 rows are free and one-time, with no credit card. After that it is $0.002 per row - the same flat rate as every other scraper on the platform. The estimator shows the cost of a run before it starts, which is worth a glance because the limit is per query and a list of URLs multiplies.

Turn a set of listings
into a table you can sort.

Your first 500 rows are free - no card, no subscription. Enough to answer the two questions this page leaves open on your own listings.

Activates instantly · no card required

Scrape Etsy listings into a spreadsheet

The Etsy Products Scraper turns listing URLs into rows. You submit etsy.com/listing/… addresses - one per line, or uploaded as a CSV, XLSX, TXT or Parquet file - set a limit per query, and each product comes back as a record with the query it came from, the name and description, two price fields and a currency, availability, rating and review count, the brand, the identifier columns, the image fields, a link and a status. Seventeen columns, one row per product, downloadable as CSV, Excel or JSON. This service shares its column set with a family of other retailer scrapers on the platform, so it is not the same seventeen-versus-fifteen shape as our Zoro or Quill pages - there is no service column here, and no position field in the JSON.

The column to read first is status. It records how the row itself went rather than anything about the product, and a row can arrive structurally complete and still be a failure notice. Both run exports we hold came back with a status of http 404 and every content field empty. The tool also notes that products are fetched through a shared proxy pool and that anti-bot sites return a blocked status on the free pool, which makes those residential-only. The practical consequence is a good one: an empty-looking export is usually not a silent failure but a set of rows telling you what happened, provided you filter on that column before you trust the rest.

Two things this page deliberately does not tell you. It prints no example values and no formats, because neither run we hold is an Etsy run - both submitted a placeholder address rather than a listing, so they confirm the shape of the export and nothing about Etsy's cells. And it does not say what separates the schema's four near-duplicate pairs - sku_code and sku, product_url and url, price and parsed_price, images and image - because that needs a populated row, and a guess written here is a guess somebody might build a schema on. A small free-tier run over your own listings answers both in a minute. Note too that the limit field on this service takes a minimum of one: leaving it empty is what takes everything, not entering zero.

On the legal side, everything collected is shown on a public listing to any visitor, no login or paywall is involved, and no person is named in the seventeen columns - there is no seller-name column, and reviews is a count rather than review text. The copyright question deserves more weight here than on a big-box catalogue, though: an Etsy listing is usually written and photographed by the individual selling the item, so collecting that copy for analysis is one question and republishing it is another. Etsy's own terms still govern automated collection from their site, so read them before you scale. Start free: your first 500 rows cost nothing and need no credit card, and after that it is $0.002 per row, flat.