Apify actor · whoareyouanas/ebay-sold-listings-scraper

eBay Sold Listings Scraper with Validated Data

Collect eligible sold-listing observations for supplied eBay keywords and marketplaces. Keep displayed price, sold-date context, provenance, and quality flags for resale and product research.

Documentation checked 2026-10-29 · deployed build 1.0.1 · run through your Apify account

01 / Overview

Match the actor to the job.

Focused sold-listing research

Set keywords, marketplace, date window, price or condition filters, and exact output limits.

Source provenance

Keep source type, provider, and source-run references alongside observations.

Separate budgets

Control the actor's output charges and optional upstream retrieval budget independently.

02 / Input

Start with a clear, bounded input.

keywords is required. Start with a small maxResults and maxResultsPerKeyword. retrievalMode hybrid can use a separately billed upstream provider, controlled by upstreamBudgetUsd.

input.json · example based on the deployed schema
{
  "keywords": [
    "nintendo switch oled"
  ],
  "ebaySites": [
    "ebay.com"
  ],
  "daysToScrape": 30,
  "maxResultsPerKeyword": 5,
  "maxResults": 5,
  "retrievalMode": "hybrid",
  "upstreamBudgetUsd": 0.05,
  "maxConcurrency": 1
}

Replace example targets and credential placeholders before running. These are documentation examples, not a promise of currently available source results.

Deployed actor input fields, types, defaults, and descriptions
FieldType / requiredDefaultPurpose
keywordsarrayRequiredNot specifiedOne to 100 searches. Shared filters apply to each keyword/site pair.
ebaySitesarray["ebay.com"]US (ebay.com) has passed live retrieval checks. UK (ebay.co.uk) is beta; results and GBP fields require successful source validation.
maxResultsPerKeywordinteger20Maximum matched unique items for each keyword/site query, including overlap already emitted elsewhere.

Minimum: 1 · Maximum: 10000

maxResultsinteger100Exact global cap on unique marketplace/item observations. Summaries and repeated query matches do not count.

Minimum: 1 · Maximum: 10000

daysToScrapeinteger30Displayed calendar-date window anchored to UTC date at run start; each explicit bound overrides its corresponding rolling bound.

Minimum: 1 · Maximum: 90

maxConcurrencyinteger2At most two API searches run together. Paid hybrid searches may run sequentially to protect the remaining output budget.

Minimum: 1 · Maximum: 16

retrievalModestring"hybrid"Hybrid tries native retrieval first, then caffein.dev/ebay-sold-listings. API calls that provider directly; native has no fallback and currently encounters access blocks. Caffein fees are separate and limited by upstreamBudgetUsd.

Options: hybrid, native, api

upstreamBudgetUsdnumber1Separate aggregate event-charge limit for Caffein child runs, including startup and fetched rows later excluded or deduplicated. This does not replace the Actor’s own max cost per run. Uncertain starts stop additional paid calls.

Minimum: 0.01 · Maximum: 1000

All other input controls (13)
Deployed actor input fields, types, defaults, and descriptions
FieldType / requiredDefaultPurpose
dateFromstringNot specifiedInclusive YYYY-MM-DD displayed calendar-date label within the supported public window. Not an exact UTC transaction boundary.
dateTostringNot specifiedInclusive YYYY-MM-DD displayed calendar-date label; cannot exceed the UTC date at run start.
categoryIdstring"0"Use 0 for the API fallback. Other categories require verified native controls and stop before a paid fallback call.
minPricenumberNot specifiedeBay source price filter, in each marketplace display currency. Not a hidden accepted-offer amount.

Minimum: 0

maxPricenumberNot specifiedUpper eBay displayed-price filter. Must be >= minPrice.

Minimum: 0

itemConditionstring"any"Initial broad eBay condition filter. Preserve observed condition labels and derived-ID provenance.

Options: any, new, used, forParts

buyingFormatstring"all"Filter tested on the supported source: all, auction, or fixed-price listings.

Options: all, auction, buyItNow

itemLocationstring"default"Use default for the API fallback. Domestic/worldwide require verified native controls and stop before paid fallback retrieval.

Options: default, domestic, worldwide

includeBestOffersbooleantrueInclude explicitly detected Best Offer records with asking-price labels. False cannot exclude undisclosed offers.
includeRawbooleantruePreserve short non-secret price/date/shipping/status strings for auditing. No full-page HTML in listing rows.
includeAnalyticsbooleantrueIncluded key-value-store summary of conservative currency-separated cohorts; never an extra billable row.
proxyConfigurationobject{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}Apify proxy for the native attempt only. API mode does not use your proxy configuration. Hybrid can use its paid fallback if proxy setup fails.
dateWindowPolicystring"strict"Strict excludes undated/ambiguous-year rows. Include unknown emits them with DATE_WINDOW_UNVERIFIABLE and uncertain date matching.

Options: strict, includeUnknown

03 / Output

Know what each returned row represents.

Illustrative output shape · not a live run
{
  "itemId": "820190412353",
  "url": "https://www.ebay.com/itm/820190412353",
  "title": "Nintendo Switch OLED 64 GB White + Case, Dock, Joycons, and Original Cables",
  "marketplace": "ebay.com",
  "displayedPrice": "170",
  "currency": "USD",
  "actualSalePrice": null,
  "bestOfferAccepted": null,
  "soldDate": "2026-10-01",
  "soldAt": null,
  "sourceType": "upstream_actor",
  "sourceProvider": "caffein.dev/ebay-sold-listings",
  "sourceRunId": "kqLvZHG0kqto6K0Ig"
}

Example values illustrate the published contract. Available fields and populated values depend on the source, mode, and result status.

Fields in the documented output view

title

Title

marketplace

Marketplace

displayedPrice

Displayed price

currency

Currency

priceKind

Price meaning

actualSalePrice

Actual sale price

soldDate

Sold date label

bestOfferAccepted

Accepted offer

shippingPrice

Shipping price

shippingType

Shipping

condition

Condition

url

Listing

sourceType

Source type

sourceProvider

Source provider

sourceRunId

Provider run

qualityFlags

Uncertainty

Output views select columns. They do not necessarily filter record types or exhaust the full JSON payload. Use structured JSON when you need nested arrays or objects.

Dataset links and run artifacts (5)
Listing observations
Available through the actor's Output tab for your run.
Run summary
Available through the actor's Output tab for your run.
Query coverage and matches
Available through the actor's Output tab for your run.
Comps summary (when enabled)
Available through the actor's Output tab for your run.
Upstream retrieval and cost diagnostics
Available through the actor's Output tab for your run.

04 / Pricing

Understand the billable unit.

These are the active public event prices checked on 2026-10-29, in USD. They describe each event, not a universal flat price for a run. Confirm your current Apify plan and run budget before starting.

Actor event prices and billing units
Billable eventRate (USD)When it applies

Validated sold listing

sold-listing

$0.002 / event

One unique eligible listing observation saved to the dataset. External Caffein Actor fees are separate.

$2.00 per 1,000 of this event. Other events and separate services are additional.

Actor Start

apify-actor-start

$0.00005 / event

Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).

Start units depend on allocated memory: one event per GB, with at least one event.

  • The actor bills unique eligible saved observations. Overlapping query matches and summary records do not add another sold-listing event.
  • Upstream Caffein actor charges are additional and can include rows later excluded locally. The parent budget and upstreamBudgetUsd are separate caps, not a combined invoice estimate.

A result limit and a spending cap are different controls. Account charges, applicable taxes, and separately billed providers or proxies must be considered where relevant. A cap setting is not a minimum invoice charge.

05 / API & automation

Use the same input from your workflow.

Test a small run in Apify Console, inspect its records and charges, then save a task or call the actor from your own application. Keep your Apify token in an environment variable. Source-specific credentials, if required, are separate from the Apify API token.

cURL · start an asynchronous actor run
# Save the input example as input.json and set APIFY_TOKEN.
# This request starts an asynchronous, potentially billable run.
curl --request POST \
  'https://api.apify.com/v2/acts/whoareyouanas~ebay-sold-listings-scraper/runs' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header 'Content-Type: application/json' \
  --data @input.json

The response identifies the run. Wait for it to finish, inspect its status, and use its default dataset and key-value store to retrieve results. A successful run can still contain partial or failed records; check the output contract above before continuing downstream.

Coverage & interpretation

Check the result before relying on it.

Questions

Before you build an integration.

What do I need to provide?

keywords is required. Start with a small maxResults and maxResultsPerKeyword. retrievalMode hybrid can use a separately billed upstream provider, controlled by upstreamBudgetUsd.

What should I check in the output?
  • actualSalePrice stays null: a displayed sold-listing amount does not reveal a hidden accepted offer or verify payment.
  • Day-level soldDate does not imply a precise soldAt timestamp. Preserve unknown shipping and quality flags, and inspect RUN_SUMMARY for coverage.
How do I budget the run?
  • The actor bills unique eligible saved observations. Overlapping query matches and summary records do not add another sold-listing event.
  • Upstream Caffein actor charges are additional and can include rows later excluded locally. The parent budget and upstreamBudgetUsd are separate caps, not a combined invoice estimate.

Keep exploring

Practical guides for the next step.