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 scrapersTrawl
What it isA 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 fromeBay'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.
HistoryWhat 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 call100 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 recordSold 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.
MarketplacesEight eBay sites on each actor: US, UK, Germany, France, Italy, Spain, Canada, Australia.ebay.com and ebay.co.uk.
PricePer 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.
UpkeepEach 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 · the script
# 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="  ")
terminal · printed 2026-10-07
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 Genera

Where 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.