eBay proxies are sold for two jobs, and only one of them is honest. On 28 September 2026 we fetched ebay.com through residential exits in the United States and Germany: over plain HTTP the home page hands both countries the same 1,976-byte, 24-word page, marked noindex, with no listings in it. The number that decides the build is the collector's: ebay_search returned 25 road-bike listings with price, condition, format, seller location and shipping in 185 seconds, for two and a half cents, and wrote into its own notes field which exit it served the run through and why the currency follows it.
The home page is the same 1,976 bytes from every country
We audited ebay.com as a pure HTTP bot from two exits on the same afternoon. The result is unusual among the retailers we have measured: the exit country changed nothing.
| Fetch | Exit | Bytes | Words | Robots meta | JSON-LD |
|---|---|---|---|---|---|
| Home, plain HTTP, no JavaScript | United States | 1,976 | 24 | noindex,nofollow | none |
| Home, plain HTTP, no JavaScript | Germany | n/a | 24 | noindex,nofollow | none |
| Home, rendered (26 September row) | United States | n/a | 24 | noindex,nofollow | none |
Read the noindex column, because it is the useful signal. eBay tells crawlers not to index that page, which means eBay itself does not consider it the home page: it is an interstitial served by Akamai in front of the store, titled "Error Page | eBay". A rendered fetch on 26 September returned the identical 24 words. The lesson for anyone budgeting a scraper is that a better IP is not the missing piece, because a residential exit in the country eBay is headquartered in got exactly what a German one got. The page you want is not served to an anonymous client in either mode.
The trap is the byte count. Two kilobytes per request looks like the cheapest page on the internet; it is the most expensive, because it contains nothing. Classify eBay responses on the presence of a canonical link and the robots meta, never on the status or on the size.
Twenty-five listings in 185 seconds, and the run says where it went
We ran the ebay_search collector once, with the input {"query":"road bike"}. It started at 17:06:43 UTC and finished at 17:09:48: 25 listings in 185.0 seconds, at $0.001 per delivered listing. Every row carried an item id, a URL, a price, a format, a seller location, a shipping line and an image; 24 of 25 carried a condition.
The part worth quoting is not a row. It is the run's notes field, which came back with one entry:
US exit pool throttled; served through a DE exit — same marketplace and listings, but eBay prices a visitor in the exit's currency and shipping hints follow it
That is the collector declaring its own fallback. It tried the US pool first, moved to a German exit when the US pool was throttled, and told you so, together with the one consequence you need to know: eBay prices a visitor in the exit's currency and computes shipping hints from the exit. In this run every price came back in dollars, so the marketplace stayed ebay.com, but a run that lands on a European exit for a European seller can return euros, and a parser that assumes the dollar sign will be wrong by a symbol. Read the notes field on every run and store the exit with every row. A tool that silently switched exits would hand you a mixed-currency dataset with no way to tell.
| Field | What the 25 rows contained |
|---|---|
| price_value | 25 of 25, from $181.27 to $6,800.00; 6 rows had a struck-through list_price |
| format | 20 "or Best Offer", 4 "Buy It Now", 1 auction with 4 bids |
| condition | 15 Pre-Owned, 4 Brand New, 5 New (Other), 1 empty |
| location | 9 United States, 5 Japan, 4 Netherlands, 2 Italy, 1 each Germany, Hungary, China, Israel, Australia |
| shipping | 18 rows with a delivery charge from +$35.12 to +$350.00; 7 "Shipping not specified" |
| sponsored | 25 of 25 flagged |
Two things in that table change how you use the data. First, 15 of 25 rows are used bikes and 20 of 25 are "or Best Offer", which means the price column is an asking price, not a transaction; the listing that closed at $1,325 after 4 bids is the only row where the number is a market signal. Second, the seller location is not the buyer's market: 9 of 25 sellers are in the United States, 5 in Japan and 4 in the Netherlands, and the shipping column is what makes a $568 bike in Germany a $648 bike in Ohio. Aggregate by delivered price, not by list price, or the cheapest rows in your dataset will be the ones nobody in your market can buy. For one item's full record, the ebay_product collector reads the item page at $0.006.
eBay's robots.txt has a checkout clause and a different rule for AI search bots
ebay.com/robots.txt is 24,164 bytes, versioned v30.2_COM_August_2026, and opens with policy rather than paths. The header states that automated access without eBay's express permission is prohibited, then adds a section that did not exist in older copies: "Checkouts are strictly for human users", with buy-for-me agents and LLM-driven bots named and told that automated checkout may be met with legal action under the User Agreement. Approved integrations are pointed at the official API and its licence agreement.
The directives are the interesting part for a data team. For the wildcard agent, keyword search is closed: Disallow: /sch/i.html?_nkw= and Disallow: /sch/, with narrow allows for advanced search and category listings. Item pages under /itm/ are open apart from tracking and fetch variants. Then a block of 10 agents, Bytespider, CCBot, ChatGLM-Spider, ClaudeBot, PerplexityBot, anthropic-ai, AmazonBot, meta-externalagent, GPTBot and Applebot-Extended, gets Disallow: / with 11 allowed help and seller paths. And a separate block for OAI-SearchBot, ChatGPT-User, Claude-SearchBot and Claude-User gets the wildcard rules with one change: Allow: /sch/. eBay closes keyword search to everyone and reopens it to the four AI answer engines by name. Seven sitemap indexes follow, for auctions, browse pages, keyword pages, products and video.
The User Agreement, effective 28 June 2026 for existing users, is the contract behind the file, and the robots header already says the one line that matters: robots and other automated means may not access the site without eBay's express permission. We will leave it at that. What eBay licenses is the developer programme's Browse API, which is authenticated, rate-limited and tied to an application key. For how the AI-bot lines in files like this one are trending, see the AI crawler user-agent list.
What a gigabyte buys on eBay
Prices from our pricing page: residential Basic $0.80/GB, the web scraping API from $0.0002 per page, and the ebay_search collector at $0.001 per delivered listing. A gigabyte here is 10^9 bytes.
| Approach | Bytes per request | Requests per GB | What you get | Cost per 1,000 listings |
|---|---|---|---|---|
| Home, plain HTTP, residential US or DE | 1,976 | 506,072 | 0 listings, 24 words | undefined: no listings |
| ebay_search collector | n/a | n/a | 25 listings per run | $1.00 |
| ebay_product collector, one item page each | n/a | n/a | full item record | $6.00 |
Half a million requests per gigabyte is the number a per-GB seller would put on the page. The column next to it says zero listings. On eBay the cost driver is delivered rows and the time per run, not bandwidth: this run took 185 seconds for 25 rows, so 1,000 listings is 40 runs and about two hours of background time at one run at a time, and the fee is $1.00 per thousand listings whatever the run time. Failed requests are never billed. If you are comparing marketplaces, Amazon returned 20 products in 43 seconds under the same rules, and Walmart is the one of the three where plain HTTP still returns a real page.
Where we stop
Three of the ten pages ranking for this keyword sell "stealth accounts" and "unlimited multiple accounts". eBay's robots header and User Agreement forbid automated access without permission, and running several accounts to evade a suspension breaches the User Agreement; we do not help with that, and a proxy does not restore a suspended account because the enforcement is not IP-based. Everything above is about reading public listings for price research, availability and market monitoring, through a collector that names its own exit.
The setting that works on eBay
- Network: residential, Basic line at $0.80/GB, and only inside the collector. A US residential exit and a German one received the same 24 words on the raw page, so no IP purchase changes the home result.
- Fetch mode: neither plain HTTP (24 words) nor a browser (24 words on 26 September) on ebay.com itself. Read search results through the collector, which returns rows.
- Country: the collector picks the exit and reports it in
notes. This run was served through a German exit because the US pool was throttled; prices stayed in dollars, but eBay prices a visitor in the exit's currency, so store the note with the rows and parse the currency symbol, never assume it. - When the proxy is not enough: it is not enough here. Use ebay_search: 25 listings in 185 seconds, $0.001 per delivered listing, 25 of 25 with a price, 20 of 25 "or Best Offer". For one item's full record, ebay_product at $0.006.
- Free tier: every account gets $2 of free API usage per month, which is 2,000 delivered listings at this collector's price.