How to scrape eBay listings to Excel (free, no code)
You have an eBay search full of the listings you want to track. Here's the free, no-code way to turn it, and sold comps, into a clean Excel or CSV spreadsheet.

You’ve run an eBay search (a product to resell, a collectible, a parts lot, a category you buy into regularly) and now you want it in a spreadsheet: titles, prices, bids, shipping, condition, and the link to every listing. Copying cards by hand is slow, and building a scraper for what is usually a sourcing or pricing task is a lot of overhead. There’s a faster, free way.
This guide covers how to scrape eBay listings, and sold comps, into Excel, CSV or Google Sheets end to end: what eBay’s User Agreement actually says about scraping, how the no-code, hand-coded, official-API, and paid-service approaches compare, and a detailed step-by-step using the free Grabby web scraper Chrome extension, including pagination, pulling extra fields from each listing page, and building a price-tracking habit around it.
Is it legal to scrape eBay?
eBay’s User Agreement bars “any robot, spider, scraper, data mining tools, data gathering and extraction tools, or other automated means” from accessing the site without eBay’s prior written permission, a broad clause that, taken literally, covers exactly the kind of scraping this guide describes. eBay tightened its User Agreement again in January 2026, with the change taking effect that February. The headline target is AI shopping agents and automated checkout (the “buy-for-me” bots that browse and purchase without a human reviewing the order), rather than someone manually pulling a search into a spreadsheet, but the underlying no-automated-access clause is the same one that has always applied to scraping.
As with most sites, US courts have held that reading data a page already shows any visitor isn’t, by itself, a computer-hacking crime under the Computer Fraud and Abuse Act (the Ninth Circuit’s hiQ Labs v. LinkedIn ruling is the leading case), but violating a site’s terms is still a contract matter, and eBay can act on it with rate limits, CAPTCHAs, or account restrictions. Because a Grabby run reads pages you’ve opened yourself, at a human pace, in your own signed-in session, it behaves like browsing rather than like a bot farm. Still: keep runs modest, don’t automate bidding or checkout, and don’t scrape other users’ personal account details. This is general information, not legal advice. Read eBay’s current User Agreement before scraping at any real volume.
What eBay’s robots.txt says
eBay’s robots.txt opens with a comment that “the use of robots or other automated means to access the eBay site without the express permission of eBay is strictly prohibited,” and the same comment block says checkouts are for human users and names scraping and “buy-for-me” agents. For ordinary crawlers (User-agent: *), search results under /sch/ are disallowed, with a few exceptions such as the advanced-search and all-categories pages, and so are many specific /itm/ URL patterns (watch, add-to-cart, and search-parameter variants among them). Several AI crawlers, including GPTBot, ClaudeBot and PerplexityBot, are disallowed from the whole site. That is how the file read at the time of writing (October 2026), and eBay edits it, so check the live file. A robots.txt file is a request to crawlers rather than a law, but here it points the same direction as the User Agreement: eBay does not want unattended bots on search pages.
What the User Agreement allows and bars
The current eBay User Agreement (the version effective June 28, 2026, which follows the February 20, 2026 amendment) bars robots, spiders, scrapers, data-mining and data-extraction tools or other automated means without eBay’s prior express permission. It also names buy-for-me agents, LLM-driven bots, and any flow that places orders without human review, and it bars getting around technical measures eBay uses to protect the service. Nothing in it carves out a personal-use exception for scraping, so the honest reading is that bulk automated collection is against the terms whatever tool you use. The consequences eBay controls are practical: throttling, CAPTCHAs, and restrictions on an account.
How eBay detects automated access
eBay does not publish how it detects bots, so anything specific would be a guess. In general, sites like it look at request rate, whether requests come from a normal browser session with cookies, the network the traffic comes from, and whether the behavior looks human. The visible results are CAPTCHAs, temporary blocks, and signed-in accounts being asked to verify. Practically, a “reasonable” pace is the pace of a person paging through results: a few pages a minute, a modest total, no parallel tabs hammering the same search, and no runs through the night. Raising eBay’s items-per-page setting so you load fewer pages is gentler than walking hundreds of small pages.
Public listing data vs. personal data
A listing’s title, price, condition, shipping cost, item location and photo are shown to anyone who searches, and those are the fields this guide collects. Information about people is different. The User Agreement restricts collecting or using information about other users without their consent, and it says a user’s information may not be disclosed or distributed to a third party for purposes unrelated to eBay’s services. So keep seller and buyer details to what you need: a seller’s public username or feedback score for sourcing decisions is one thing, building a contact list of eBay members is another. If you are in the EU or UK, a person’s name and account details can count as personal data under GDPR even when they are public.
Reusing eBay data commercially
Collecting prices for your own pricing or sourcing decisions is a different activity from republishing eBay content. The User Agreement bars commercializing information or data obtained through automated tools without eBay’s permission, and listing photos and descriptions are usually the seller’s copyright, so copying them into your own store or site is a copyright question on top of the terms. Numbers you derive, such as an average sold price for a card, are a safer thing to use and share than the raw listings. If your product or service resells eBay data, that is the point to ask a lawyer and look at an official data agreement.
Sold and completed listings
Sold prices are the most useful and most restricted data. eBay now asks you to be signed in to see Sold and Completed results, so a scrape of them runs in your own logged-in session, and the User Agreement applies to you as an account holder. The official route, the Marketplace Insights API, is described by eBay as a limited-release API for select approved developers, and it covers items sold up to 90 days back. Most individual sellers and resellers will not get access. If you pull sold comps by hand, keep it to the items you are researching, not a sweep of a whole category.
When to use eBay’s official APIs instead
If you are building a product, running anything on a schedule, or need volume, use the APIs. The Browse API returns structured active-listing data and, per eBay’s API call limits page, defaults to 5,000 calls a day, with higher limits available through eBay’s Application Growth Check. It is the sanctioned route and it does not break when eBay changes its page layout. The trade-offs are that you need a developer account, OAuth keys and some code, and that it does not cover sold items. A no-code scrape is for occasional, human-paced research. The APIs are for anything that needs to be permitted, repeatable and large.
This is general information based on eBay’s published documents as they read in October 2026, and it is not legal advice. Terms change and rules differ by country, so read the current agreement before relying on any of this commercially.
Four ways to get eBay data into a spreadsheet
As with any marketplace, there’s more than one route from an eBay search to a usable spreadsheet. Which one is worth it depends on volume, whether you need sold data, and whether you can code.
| Approach | Best for | Effort | Cost | Watch-outs |
|---|---|---|---|---|
| No-code tool (Grabby) | One-off or repeated manual research, including sold comps | Minutes: point, click, export | Free | No scheduling or CAPTCHA-solving yet, and you drive the browser |
| Custom script (Python, BeautifulSoup, Scrapy) | Developers with custom logic or a large, repeated job | Hours to days, plus upkeep | Free tool, but your time, plus proxies at scale | Sold listings sit behind a login wall, so a script needs to manage an authenticated session, not just fetch pages |
| eBay Browse API | Developers pulling structured, active-listing data | Register a free dev account, get OAuth keys, integrate | Free tier: 5,000 calls/day per app | Active listings only. Sold/completed data needs the restricted Marketplace Insights API, which isn’t open to most developers |
| Paid scraping / proxy service | High-volume, ongoing production pipelines | Low, just call their API | Usage-based, recurring | Ongoing bill, and you still build the ingestion and cleanup pipeline yourself |
The Browse API is genuinely good for active-listing lookups if you can code and don’t need sold prices. But for the sold-comps workflow resellers actually want (and for anyone who’d rather not write and maintain a script), the no-code route below covers it in a couple of minutes.
What you’ll need
- Google Chrome, Microsoft Edge, or Brave.
- The free Grabby extension — no account, no proxies, runs in your browser.
- An eBay search results page for whatever you want to track. If you want sold prices, sign into your eBay account first.
Step 1: Install Grabby (free)
Add Grabby to your browser from the Chrome Web Store. Nothing to sign up for, nothing to configure. Everything in this guide works on the free plan.
Step 2: Open your eBay search and filter first
Search eBay for what you want and apply filters before you scrape anything: Buy It Now vs. Auction, condition (New, Used, Open box, For parts), price range, item location, or Free Shipping. If you want pricing history rather than active listings, check Sold Items or Completed listings under the buying-format filters. Note that eBay now requires you to be signed in to see sold results, so log in first. It’s also worth bumping eBay’s own items-per-page setting up to 120 or 240 (the gear icon near the results count) before you scrape, so Grabby has fewer pages to walk. Scroll down once so the first page of results has fully loaded.
Step 3: Select the listings
Click the Grabby icon, choose Scrape List, then Select the list and click any one listing card. Grabby highlights the whole set of results and one click grabs them all. No CSS selectors, no XPath. It detects the columns for you: title, price (or current bid and bid count for auctions), Buy It Now, shipping cost, condition, item location, image, and link. Sponsored listings share the same card layout as organic ones, so you may see a few mixed in, easy to filter out in the table afterward.
Fields you can extract from eBay
Which columns you get depends on whether you scrape the results page or follow each listing into its own page. Results are shown as they appear on screen, so a field that eBay does not show for a given listing comes back empty.
| Field | Where it comes from | Notes |
|---|---|---|
| Title | Results page | Often starts with “New Listing” on recent items. Strip it in the table. |
| Price / current bid | Results page | Auctions show the current bid, fixed-price items the asking price. Keep an auction vs. Buy It Now column. |
| Bid count | Results page | Auctions only. |
| Shipping cost | Results page | Text such as “Free shipping” or “+$4.50”. Convert to a number. |
| Condition | Results page | New, Pre-Owned, For parts, and so on. |
| Item location | Results page | Shown on many listings, not all. |
| Listing URL and item ID | Results page | The number in the /itm/ link is the item ID. Use it to dedupe. |
| Image | Results page | Thumbnail URL. See the note on reusing photos above. |
| Sold date | Results page, Sold Items filter | Only on sold or completed searches, and only when you are signed in. |
| Item specifics (brand, size, MPN, UPC) | Listing page | Needs the follow-the-link step below. |
| Seller name and feedback | Listing page | Needs the follow-the-link step. See the note on personal data above. |
What the output looks like
An illustrative example of the exported rows (made-up listings, to show the shape of the data):
title,price,bids,shipping,condition,location,item_id,url "Vintage film camera, tested",84.00,,Free shipping,Pre-Owned,"Portland, OR",1234567890,https://www.ebay.com/itm/1234567890 "Film camera lot, for parts",31.50,6,+$9.20,For parts or not working,"Austin, TX",2345678901,https://www.ebay.com/itm/2345678901 "Camera body, boxed",129.99,,+$6.00,New,"Denver, CO",3456789012,https://www.ebay.com/itm/3456789012
Listings with variations
Some listings sell one item in several sizes, colors or bundles. On the results page these usually show a single price or a price range, and the exact price per option only appears on the listing page once a variation is chosen. Grabby reads what the page shows, so on a variation listing you get the displayed price or range, not one row per variation. If per-variation prices matter, treat those rows as a flag to open the listing.
Step 4: Grab every page
eBay spreads results across many pages, defaulting to 60 listings per page (up to 240 if you raised it in Step 2), and it has been rolling out a “Load more” button on some layouts alongside the classic numbered pages. Either way, before you run it, choose Pagination and point at eBay’s next-page control once, or use Auto-scroll if you land on a load-more layout. Set a sensible maximum, hit Start, and watch the row counter climb as Grabby collects every listing.
Follow listing links for the fields that only live on the item page
The search grid doesn’t show everything. Give Grabby the column of listing links and it will open each one and pull extra fields: full item specifics (brand, size, color, UPC or MPN), the seller’s name and feedback score, return policy, and watcher count, then merge them back into the matching row. That’s the difference between a list of titles and a dataset you can actually price against.
Step 5: Clean the data
Your results open in an editable table. Dedupe by the item ID in each listing’s /itm/ link rather than by title, since near-identical titles are common. Normalize shipping text so “Free” becomes a numeric 0 instead of a string, and consider splitting auctions from fixed-price listings into their own column so you’re not averaging a current bid against a Buy It Now price. Remove empty or duplicate rows, rename headers, and hide anything you don’t need, all before export.
Step 6: Export to Excel, CSV, JSON, or Google Sheets
Click Export and choose your format: CSV or Excel to open directly, JSON if the data is headed somewhere else, or copy the whole table and paste it straight into Google Sheets. Everything is saved locally, and nothing is uploaded anywhere.
Advanced: sold comps, deduping, and tracking prices over time
- Sold comps are the differentiator. Since eBay’s Marketplace Insights API (the one that returns sold-item data) is a restricted, business-only API that most individual developers can’t get approved for, and the signed-out web view of sold listings was removed in 2026, a signed-in browser scrape is one of the few practical ways left for an individual to pull sold comps at all. Sign in, filter to Sold Items, and scrape as normal.
- Dedupe by item ID, parsed from the numeric portion of the listing URL. It’s stable even when titles vary slightly between a search result and its own page.
- Compare total cost, not just price. A cheaper item with expensive shipping can lose to a pricier one with free shipping, so keep price and shipping as separate numeric columns to sum them.
- Set a refresh cadence. For live price tracking or sourcing alerts, re-run the same search on a schedule you keep yourself (daily for fast-moving categories, weekly otherwise) and export each run with a dated filename so you can compare trends over time. There’s no built-in scheduler yet, but a saved selection takes under a minute to re-run.
What people use this for
- Reseller sourcing and arbitrage. Shortlist listings priced below recent sold comps before buying.
- Pricing your own listings. Pull sold comps for an item you’re about to list and price it competitively.
- Tracking a specific collectible or drop. Watch prices on a card, sneaker, or part number over weeks.
- Competitor seller monitoring. Track another seller’s active listings and pricing.
- Building a want-list tracker. Keep a running spreadsheet of items you’re watching, refreshed on your own schedule.
Frequently asked questions
Is it really free? Yes. Grabby is free while in early access, with every feature unlocked and no sign-up.
What eBay fields can I scrape? Whatever the results page shows: title, price or current bid and bid count, Buy It Now, shipping cost, condition, item location, the thumbnail, and the link to each listing.
Can I scrape sold or completed listings for pricing comps? Yes, but eBay now requires you to be signed in to view Sold and Completed results. The signed-out view was removed in 2026. Sign into eBay first, apply the Sold Items filter, then scrape as normal.
Can I scrape every page of results? Yes. Choose Pagination and point at eBay’s next-page control once, or use Auto-scroll for infinite results, and Grabby walks every page.
Does eBay block this? Grabby reads the page you already loaded in your normal, signed-in browser, so it behaves like a person browsing rather than a bot. Very large, rapid runs can still trip rate limits, so keep page counts sensible.
Is it legal to scrape eBay? eBay’s User Agreement technically prohibits automated data collection without permission, and it was tightened again in 2026, mainly to target AI shopping and checkout bots. Reading publicly visible listings for personal research carries realistic risk of rate-limiting, not criminal liability, if you keep it reasonable. Not legal advice.
Should I use the eBay Browse API instead? It’s a solid option for active listings if you can code, with a free tier of 5,000 calls a day. It won’t get you sold or completed listings, though. That data sits behind eBay’s restricted Marketplace Insights API, which isn’t open to most developers.
Can I export to Google Sheets? Yes. Copy the table and paste it into a sheet, or export CSV or Excel and import it.
What does eBay’s robots.txt say about scraping? At the time of writing (October 2026), eBay’s robots.txt states that automated access without eBay’s permission is prohibited, disallows /sch/ search pages and many /itm/ URL patterns for ordinary crawlers, and blocks several AI crawlers from the whole site. The file changes, so check ebay.com/robots.txt. Not legal advice.
Can I republish or resell scraped eBay data? Be careful. The User Agreement bars commercializing data obtained with automated tools without eBay’s permission, and listing photos and descriptions are usually the seller’s copyright. Using prices for your own decisions is lower risk than republishing listings. Not legal advice.
Scrape other marketplaces the same way
The same select, paginate, clean, and export flow works on any store. See our guide to scraping Amazon product data to Excel, the general version for any website to Excel, or scraping straight into Google Sheets.
That’s your eBay data — active listings or sold comps — in a spreadsheet, free and without code. Install Grabby and turn any eBay search into Excel in a couple of minutes.