Is a used Steam Deck OLED cheaper on ebay.de or on ebay.co.uk? I wanted a quick answer with real listings instead of scrolling two sites and converting currencies in my head. This post shows how I got it with the eBay Scraper on Apify: first with no code, then with a short Python script that loads everything into pandas.
All numbers below come from one run on 22 October 2026: the query steam deck oled on two sites, capped at 20 listings per site.
What the run returned
The run saved 24 listings: 18 from ebay.de and 6 from ebay.co.uk. The UK search came back thinner than the German one, so treat the UK side as a small sample. On top of the listings, the scraper added two price summary rows (one per site) and one site comparison row.
The summary rows did the currency work for me:
| Site | Listings | Min | Median | Max | Median in USD |
|---|---|---|---|---|---|
| ebay.de | 18 | 441 EUR | 640 EUR | 919.95 EUR | 718.98 |
| ebay.co.uk | 6 | 419.99 GBP | 550 GBP | 618.70 GBP | 737.09 |
The comparison row marked de as the cheaper site, with a median spread of 18.11 USD. That gap is small. Condition matters more than the country here, as the pandas section shows.
Fields you get per listing
These are the columns I used most. Every listing record has them, though some are empty when eBay does not show the value.
| Field | Example from this run | Notes |
|---|---|---|
title |
Valve Steam Deck OLED 512 GB Handheld Spielkonsole | As shown on eBay |
price, currency
|
450, EUR | Local currency of the site |
priceUsd |
505.53 | Converted, handy for cross-site work |
shippingCost, totalPrice
|
7.69 | Total is price plus shipping |
condition |
Gebraucht | In the site's language |
buyingFormat |
auction / buy-it-now | |
bids |
21 | Auctions only |
watchers, soldCount
|
17, 591 | Only when eBay displays them |
sellerType |
private / business | Shown on sites like ebay.de |
sellerFeedbackPercent, sellerFeedbackCount
|
100, 1090 | Seller reputation |
marketplace, site
|
ebay.de, de | Which eBay site it came from |
epid, imageUrl, url
|
Product ID, photo, link |
Every record also has recordType: item for a listing, price-summary for the per-site stats, site-comparison for the cross-site row. That one field makes filtering easy later.
Option 1: no code
- Open the eBay Scraper page and click Try for free. You need a free Apify account. No eBay account is involved.
- In Search queries, type
steam deck oled. - In eBay sites, pick United Kingdom and Germany. There are 15 sites in total, and a switch to search all of them at once.
- Set Max listings per search to 20 while you test.
- Add
case,skinandhülleto Exclude words in title. Accessory listings drop out and you are not charged for them. - Leave Price summary per search on and turn on Compare prices between eBay sites.
- Click Start. My run finished in under a minute.
- Open the Price summaries view for the numbers above, or export everything as CSV, Excel or JSON.
Input options worth knowing
-
eBay URLs: set filters on eBay in your browser and paste the link. Search pages, categories (
/b/...), stores, seller pages and single listings (/itm/...) all work. - Filters in the form: category ID, min and max price, condition (new, open box, refurbished, used, for parts), auction or Buy It Now, Best Offer only, free shipping only, item location, seller type, minimum seller feedback, sort order.
-
Title must contain: the opposite of exclude words. One UK result was titled "Valve Steam Deck 512GB Handheld Console - Black" with no "OLED" in it. Adding
oledhere would have removed it. - Listing details: opens each listing and adds item specifics, brand, MPN, EAN/UPC, all photos and returns info. Costs extra, so only switch it on when you need those fields.
- EAN / UPC codes: search by barcode instead of keywords.
- Sellers: give usernames to get a profile, active listings and recent buyer feedback with prices paid.
- Only new listings: monitoring mode, covered below.
- Go past eBay's 10,000 result limit: big searches get split into price ranges automatically.
Option 2: Python with apify-client and pandas
Install the two packages:
pip install apify-client pandas
Then run this. Put your own API token from the Apify console in place of the placeholder.
from apify_client import ApifyClient
import pandas as pd
client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
"searchQueries": ["steam deck oled"],
"sites": ["uk", "de"],
"maxItemsPerSearch": 20,
"excludeKeywords": ["case", "skin", "hülle"],
"priceSummary": True,
"compareSites": True,
}
run = client.actor("liveclaude/ebay-scraper").call(run_input=run_input)
items = client.dataset(run["defaultDatasetId"]).list_items().items
df = pd.DataFrame(items)
listings = df[df["recordType"] == "item"].copy()
summaries = df[df["recordType"] == "price-summary"]
by_condition = listings.groupby(["marketplace", "condition"])["price"].agg(["count", "median"])
print(by_condition)
print(listings.groupby("marketplace")["totalPrice"].median())
# keep seller usernames out of files you share
listings.drop(columns=["sellerName"], errors="ignore").to_csv("steam_deck_ebay.csv", index=False)
The first print gave me this:
count median
marketplace condition
ebay.co.uk Pre-owned 6 549.995
ebay.de Gebraucht 11 599.900
Neu 4 734.475
Neu (Sonstige) 3 630.000
So ebay.de had a mix of 11 used and 7 new or "new other" units, while all 6 UK listings were pre-owned. The German overall median of 640 EUR is pulled up by those new units at a median of 734.48 EUR. If you only care about used devices, the fair comparison is 599.90 EUR against 550 GBP.
Shipping changes the picture a bit too. Median totalPrice was 650.69 EUR on ebay.de and 562.47 GBP on ebay.co.uk. Two UK sellers charged 20 GBP for delivery, which is a lot on a 550 GBP item.
Auctions are worth a separate look. Germany had 4 of them. Two had bids (15 bids at 441 EUR, 21 bids at 505 EUR) and two had none yet. Those prices will move until the auction ends, so do not mix them into a "typical price" without checking timeLeft.
Scheduling and integrations
A one-off run answers one question. For price tracking, schedule it.
- Save your input as a task in the Apify console.
- Turn on Only new listings (monitoring). Each run then returns only listings it has not seen, plus price drops.
- Leave Track final prices of ended listings on. When a tracked listing ends, the scraper opens its public page and records the final price, bids, end date and whether it sold. Each record carries
listingStatusChangewithnew,price-drop,sold,ended-unsoldorremoved. - Add a schedule, for example daily at 07:00.
This matters because since July 2026 eBay shows sold and completed searches only to signed-in users. The scraper does not log in, so monitoring is how you collect real sale prices over time.
For delivery, connect the dataset to Google Sheets, Make, Zapier, n8n or a webhook. You can also call liveclaude/ebay-scraper from an AI agent through the Apify MCP server.
Pricing per 1,000 results
The scraper uses pay per event pricing. Current prices per 1,000 events:
| Event | Free | Starter | Scale | Business |
|---|---|---|---|---|
| Listing | $3.20 | $2.90 | $2.70 | $2.50 |
| Listing details (optional) | $5.00 | $4.50 | $4.20 | $4.00 |
| Description (optional) | $5.00 | $4.50 | $4.20 | $4.00 |
| Seller profile | $5.00 | $4.50 | $4.20 | $4.00 |
| Buyer feedback entry | $2.50 | $2.20 | $2.00 | $1.80 |
A price summary or site comparison row costs about one cent each. Listings removed by your filters, already seen listings in monitoring mode and failed pages are free. My test run cost well under 10 cents. You can set a maximum cost per run in the run options and the scraper stops there.
Responsible use
The scraper collects publicly visible listing data and does not use an eBay account or cookies. Search results can include seller usernames, and on eBay many sellers are private people. I drop sellerName before saving or sharing anything, as in the script above, and work with feedback counts and seller type instead. If you store data on individuals, GDPR applies to you, and eBay's terms apply to how you use the data. Keep request volumes sensible and only collect what you need for the question you are answering.
For my question the answer was short: used units sat around 600 EUR in Germany and 550 GBP in the UK. At that gap, shipping and condition decide which listing is the better deal.
This tutorial was written with AI assistance and checked by the author. All numbers come from a real run of the scraper.


Top comments (0)