Trawl vs an Apify eBay sold listings scraper
An Apify eBay sold listings scraper is an actor that reads eBay's sold pages when it runs. It charges per result and sees about 90 days. Trawl is one HTTP call over sales it has already recorded.
What it is
A scraper you run on Apify's platform. It reads eBay's sold pages while it runs and charges per result. It sees what the pages show: about 90 days of sales. On 2026-10-07 three such actors were in the Apify Store.
For the same data as one call, create a free account and call the eBay Sold Listings API.
Side by side
| Apify eBay sold listings scrapers | Trawl | |
|---|---|---|
| What it is | A community actor on Apify. You start a run, wait, then read its dataset. | One HTTP GET. The answer comes back in the same request. |
| Where the data comes from | eBay's sold pages, read during the run. One actor needs an eBay session cookie since August 2026. One says sold mode needs no login. | Sales recorded as they happen. A call reads nothing from eBay. |
| History | What eBay's pages show. Two actors cap a run at 1 to 90 days back. | Recorded sales, older than 90 days. |
| Results per run or call | 100 per keyword by default on one actor. About 300 per run on another. Up to 1,000,000 on the third, on a paid plan. | Up to 2,000 in one response, as 20 pages of 100. Older sales by date_to. |
| One record | Sold price, currency, sale date, title, URL, item id, condition, shipping, seller name and feedback. Item specifics in one actor's detailed mode. | Price, shipping, sale date, condition in eBay's words, buying format, bids, item id, category, image. The item endpoint adds specifics, description, images, seller and recorded sales. |
| Marketplaces | Eight eBay sites on each actor: US, UK, Germany, France, Italy, Spain, Canada, Australia. | ebay.com and ebay.co.uk. |
| Price | Per result: from $2.00, $2.50 and $4.50 per 1,000 on the three actors. Plus an Apify plan: $5 of usage a month free, then from $19 a month. | Credits: 1 per page of 100 results, 0 for an empty result. 250 credits a month free, then from $20 a month for 3,000. |
| Upkeep | Each author maintains their actor against a page eBay changes. On 2026-10-07 the three showed 100%, 96.6% and 0% of runs succeeded. | One contract, the OpenAPI document, versioned v1. |
The same run on Trawl
An actor run names keywords, a site and a result count. Trawl's search takes the same three. Here it asks for 300 sales, three pages of 100. The script reads the key from TRAWL_API_KEY. It costs 3 credits.
# same_run.py (pip install requests)
import os
import requests
# An actor run: keywords, a site, a result count. The same job on Trawl is
# one GET: three pages of 100 sales, newest first, 3 credits at most.
r = requests.get(
"https://api.trawl.dev/ebay/v1/sold",
headers={"x-api-key": os.environ["TRAWL_API_KEY"]},
params={
"query": "airpods pro 2nd generation", # was keywords
"site": "EBAY_US", # was ebaySite: ebay.com
"condition": "used",
"exclude": "case,cover,box",
"max_pages": 3, # was count: 300
},
timeout=30,
)
r.raise_for_status()
sold = r.json()
print(f"{sold['count']} sales, {sold['credits_charged']} credits")
for s in sold["results"][:3]:
ship = f"ship {s['shipping_price']:.2f}"
print(s["date_sold"][:10], f"{s['sale_price']:>7.2f}", ship, s["title"][:40], sep=" ")300 sales, 3 credits
2026-10-07 65.00 ship 0.00 Earbuds For Apple AirPods Pro 2nd Genera
2026-10-06 81.95 ship 0.00 Apple Airpods Pro 2nd Generation MQD83AM
2026-10-06 65.00 ship 0.00 Earbuds For Apple AirPods Pro 2nd GeneraWhere an actor is the better fit
Six more marketplaces: the actors read ebay.de, .fr, .it, .es, .ca and .com.au. Trawl does not. On two of the three actors, a one-off pull of a few hundred rows fits in Apify's free usage.
Trawl on Apify
If you would rather stay on Apify, Trawl is in the Store too: the eBay Sold Listings API Actor runs the same search against the same database and charges per sold listing, with no Trawl account needed. It returns in seconds because nothing is scraped during the run, and it keeps the history past 90 days that the scrapers above cannot see.
Where Trawl differs
Trawl's rows exist before you ask. A call returns in one request, with no run to wait for and no cookie to refresh. It keeps sales after eBay's 90 days: the eBay sold listings history guide reads a year of them. The scrape eBay sold listings in Python guide shows the call in thirty lines.