How to Scrape eBay Search Results with A-Parser

Support Anastasia

Administrator
Staff member
A-Parser Enterprise

hero2400.webp


eBay Search Results Scraper: Prices, Sales Counts, and Product Links

From eBay Search Results to a Product Table

One listing is cheaper, another is marked “318 sold”, and a third has a struck-through price. There is plenty to compare in eBay search results. Let’s put these listings into a table, with one row per item and prices, displayed sales counts, and links side by side.

In this guide, we will configure Shop::eBay in A-Parser. You’ll enter search phrases such as portable blender and get a CSV file that opens in Excel or Google Sheets. The file will contain titles, prices, links, and other fields available in each search-result card. The old price, rating, and displayed sales count are also saved if eBay displays them in search results.

You can then sort items by price, compare the displayed sales counts, and choose listings for a closer review.

Inputs and outputs

What you provideWhat A-Parser processesWhat you get in CSV
Search phrase — for example, portable blendereBay search listingsRows with titles, prices, links, and other listing attributes
eBay market — for example, the United StatesThe local eBay version and its currencyPrices in the selected market’s currency: $, £, or €
CSV export configurationValues with commas and quotation marks in titlesA properly formatted CSV for Excel and Google Sheets, without shifted columns

How it works:
Enter a search phrase — for example, portable blender — and A-Parser will collect listings from eBay search results. Do not use links to individual items or stores: A-Parser will treat them as text search queries.



1. What data does eBay show in a search result card?

In search result cards, Shop::eBay collects 11 fields. Here is what you can save and use in a table:

In a CSV template, item is the current listing. Therefore, its fields are written as item.title, item.price, and item.link.

A-Parser fieldCSV template fieldWhat it containsWhat it is useful for
Titleitem.titleThe item title shown in the listingSee which words sellers use in their titles
Linkitem.linkItem URL without query parametersSave the item address without link parameters
Imageitem.imageLink to the item photoMatch item titles with photos
Current priceitem.priceA price string: a number, range, or textCompare prices and sort found items from cheap to expensive after handling non-numeric values
Old priceitem.old_priceThe struck-through price, if shown in the listingSee how current and struck-through prices differ
Currencyitem.currencyCurrency symbol ($, £, €)Check the currency before comparing prices
Ratingitem.ratingThe rating shown in the listingCompare ratings where they are shown
Reviewsitem.reviews_countThe number of reviewsSee how many reviews support the displayed rating
Displayed sales countitem.number_salesDisplayed sales count, if it appears in the listingCompare displayed sales counts in eBay search results
Status labelitem.light_highlightThe main card label, for example New ListingHighlight listings with the New Listing label
Additional informationitem.secondary_infoAn additional label; in the test, Brand New and Open BoxSplit cards by additional labels, for example Brand New and Open Box

Two things to keep in mind: empty fields and price ranges

  1. An empty cell is still a result: one listing has an old price and rating, while another has only a title and current price. A-Parser saves available fields and leaves unavailable ones empty. If eBay does not show a sales count, or the card only says sold out, the number_sales field remains empty. Do not replace it with zero: an empty value does not mean there were no sales.
  2. A price sometimes comes as a range: in the test CSV, ranges appeared in 177 of 1,500 rows (11.8%) — about every ninth row. For example, 16.99 to 17.99 is saved as one string. One more card returned the text See price instead of a number. Before calculations, these values need separate handling: which end of the range to take and how to handle text depends on your task.



2. Configure A-Parser to export eBay results to CSV

What you need




Step 1. Select Shop::eBay

  1. Open the A-Parser web interface.
  2. Go to the Task Editor.
  3. Select Shop::eBay from the parser drop-down list (by default, the parser is assigned the p1 alias or is available directly).

en_parser.png




Step 2. Add search queries

In the Queries field, enter item keywords just as you would enter them in the eBay search bar:

Code:
portable blender
dog car seat cover
solar garden lights
thermal label printer
vintage film camera

Scaling to thousands of queries:
For your first test, start with 1–3 keywords. Once you have checked the CSV structure, use the built-in iteration macro: portable blender {az:a:z} — A-Parser will automatically generate 26 subqueries from portable blender a to portable blender z to expand coverage deeper into the search results.



Step 3. Configure the domain, pages, proxies, and retry count

In the Shop::eBay settings, configure these key parameters:

  1. Ebay domain: select the target market, for example United States (ebay.com), United Kingdom (ebay.co.uk), or Germany (ebay.de).
  2. Pages count: set 5 pages for each search query.
  3. Items Per Page: select 60 items per page.
  4. Proxies: use US residential proxies for ebay.com.
  5. Request retries: set 150 for this example.

⚡ Why use a Request retries = 150 limit?
This sets the maximum number of retry attempts for each request. In the test export, all five queries returned five pages each. The log showed 403 responses, but collection completed successfully. Even with a limit of 150, you should still check the final result in the log and output file.



Step 4. Format the output with tools.CSVline

To make sure the table opens correctly in Excel and Google Sheets, use the built-in tools.CSVline helper. It automatically quotes fields that contain commas and escapes special characters.

1. Add column headings (Initial text)

Open More options and enter the header row in the Initial text field. Be sure to add a line break at the end:

en_prepend.png


Code:
Keyword,Product Title,Current Price,Old Price,Currency,Sales Count,Rating,Reviews,Product URL

2. Set the result template (Result format)

Paste this Template Toolkit template into the Result format field:

Code:
[% FOREACH item IN products;
    tools.CSVline(
        query,
        item.title,
        item.price,
        item.old_price,
        item.currency,
        item.number_sales,
        item.rating,
        item.reviews_count,
        item.link
    );
END %]

If you use parser aliases (for example, p1), replace products with p1.products and query with p1.query.



Step 5. Save the file and run the task

  1. In the Where to save the result block, select To file.
  2. Set an output filename with a date macro:
    Code:
    results/ebay-search-$datefile.format().csv
  3. Click Add task.
  4. Go to the Tasks Queue. After the task finishes, click the filename to download the finished CSV.

en_queue.png


Here are four rows from the test export. We validated the nine-column template against 1,500 rows: Keyword is filled in every row, and titles containing commas stay in a single column.

Code:
Keyword,Product Title,Current Price,Old Price,Currency,Sales Count,Rating,Reviews,Product URL
"portable blender","TENKER 1000W Smoothie Blender Fruit Juicer Mixer Countertop Blenders Portable",29.99,59.99,$,53,,,https://www.ebay.com/itm/168612307927
"portable blender","Hamilton Beach Personal Blender With Travel Lid #51146V",19.49,,$,,5.0,4,https://www.ebay.com/itm/116077181556
"portable blender","TENKER Personal Blender 900W Shakes Smoothies Vegetable Fruit Countertop Blender",32.99,,$,75,,,https://www.ebay.com/itm/197009518619
"portable blender","Portable Blender Juicer Cup USB Rechargeable Smoothies Mixer Fruit Machine","16.99 to 17.99",,$,131,,,https://www.ebay.com/itm/165878398951



3. Why use tools.CSVline for CSV?

A common mistake when creating a CSV is to join values manually with commas:

Code:
[% item.title %],[% item.price %],[% item.link %]

In real eBay search results, this approach will break the table:

  1. Commas in item titles: The listing Patriot Portable Mini Blender, USB Rechargeable, Juicer, Shakes & Smoothies contains three commas. With manual concatenation, Excel will split one title into four different columns, and every following value (price, link) will shift to the right.
  2. Double quotation marks and inches: Listings can also contain double quotation marks — for example, a screen size such as 15.6" — which can break CSV syntax.

tools.CSVline keeps the table intact: it automatically wraps cells with separators in quotation marks and adds a correct line break.

Open the finished CSV in Excel or Google Sheets. Check a few rows with commas in titles and empty fields: the title should stay entirely in its own cell, while prices and links should appear under their headings.



4. What did the test export show for five queries?

To verify the setup, we ran the five example search queries. The test used the US market, US residential proxies, 5 pages per query, and Request retries = 150. In this run, eBay returned 60 listings per page, so every query produced 300 rows.

The CSV contains 1,500 rows, 1,312 unique links, and 1,191 unique titles. 188 rows contain a link that appears more than once in the export: one item can appear for different queries or on different pages.

Search queryCSV rowsCollected pagesMedian numeric price
portable blender3005$24.98
dog car seat cover3005$29.99
solar garden lights3005$18.40
thermal label printer3005$62.96
vintage film camera3005$50.00

All five queries returned five pages of results. The log showed 403 responses and retries, but the export finished without parsing timeouts.

What the listings show

Two prices in adjacent columns

391 rows included a struck-through price. For example, TENKER 1000W Smoothie Blender has a current price of $29.99 and a struck-through price of $59.99. Both values appear side by side in the CSV, so you can compare them and choose listings for a closer review. This export does not show price-change history.

Not every row includes a displayed sales count

The displayed sales count is populated in 260 of 1,500 rows and ranges from 6 to 10,000; the median among rows with a displayed count is 101.5. You can sort these rows by the displayed number and examine them in more detail. Leave the remaining cells empty: an absent count does not mean there were no sales.



5. Frequently asked questions about collecting eBay data

Can I submit an item or category page URL?

No. Shop::eBay works only with search phrases. If you submit an item URL in the query field, A-Parser sends it to the eBay search bar (the _nkw parameter), and you get search results for the text of that URL rather than data from that specific listing.

Why are sales, rating, and review fields sometimes empty?

eBay displays a sales label (for example, 154 sold) and a rating only when a listing has enough confirmed activity. An empty field means that this element was absent from that search-result card’s markup. Do not replace empty cells with zeroes, so as not to distort later statistical analysis.

What should I do with a price range?

Such prices are returned for items with variations. If you need to run numeric calculations, you can parse the string in the Template Toolkit template — for example, take the first number with a regular expression: item.price.match('^[\d\.]+').0 — or export the raw string and process it when loading it into an analytics database.

What should I do with a 403 Forbidden error?

eBay actively filters traffic it considers suspicious. Make sure that:

  1. You use US residential proxies for ebay.com.
  2. In the parser overrides, select a checker configured with those proxies.
  3. The log shows whether there were retries and whether the Request retries limit was reached. In the test export, 403 responses occurred but all pages were collected; you should still check the result after the task completes.



6. Preset for a quick start

To avoid setting up the scraper manually, import the ready-to-use configuration. Copy the code from the spoiler below and paste it into Task Editor → Import Tasks:

Code:
eJyFVVFv2jAQ/iuW1UqtlLL2oXtgTzQDrVtHGLR7AYRMcgQPx05tB4oQ/31nJ00o
dF0kRO58393583fOjq5BG64kbd8E1DKzMgMNBqyh7fGO5v6dtincse1VOPp91X3J
lbY0oDnTBqEYNqajpcrbbReDCwksWCEwZEftNgcEK6yheQK4yBO0CwO5Vi8ueM1E
gSFWF7D/N8BHh0uIV6AbUF3pf0gNVnMwB8ib2+sPUSyFWBXSNpDbD8K5hczMHKiJ
/3z9AWChdMYscut5qrsan5NeNOx2wm/EpST3fYL9J0VszZeJJPhYpYRp4TkILuGi
9LnnuQC9DRrbwVuWWwHHzlzz+MSpRDJ7dyEutAYZn6SWRTYHPTNMgDle08xymZ54
Yc1hY2ae1uNF3M2qdF3iRrv9r+R8SvfTaUBLjkzPE4YUneU3rUqU9eKIreFROVq5
gMbdQ6vPMkds5fkEc1SxAabj5dVZwiw4RKs8jYvLVmzWCGdJwi1OBBNlVSfxppMn
yZ/9YUmFsY53VFZPqwxdFl5s5dy+djymZ96mmKLw2F8lphR9QA1232PYR3K0gMwg
lUpHuesG3TuqZEeIB1iDQHPBhIGq2l3BRYLT2Fkg6L4Cvh8SneTY15s7LIWS3Wjs
oc7irbvoZ4NK1INK3RzOcdeCZ9yibUI/OO3rgK4A8pqvvuMrUxrqIlXeqjZeOzlI
Nx0/YLtROgkGpfbJo9dx6KVoycDrNBJJ9Ra+SnTkxEh89WBYanBYiq7O9DR8mMiJ
bDTSyaua9IilN2f+1hkrueBpVI30a2QhH/HyjGSoslyAo00WQgTurhs2euyY6pCd
0TBwDA59iYMbDq9mN/nfR2WrOKuo91vXYIYHdVi1ShkzIXC3hysOaKzKI9nV+kgd
XnbU3exsLoDgT+KGJzJRKYmZJjgzlsROExNplEBPynQCkgieLq2ZSLsE1Lsggs1B
4K3FpXWxa/zHa5HgnGWYKENhHkyN58BTiqOYKhwStPbT+ttSf4l2KLY/ZlB6Hcz7
9n8BmqBR4A==



Useful links

 
Back
Top