{
  "id": 15253319,
  "title": "I logged every status code scraping eBay sold listings. The block is not where you think",
  "url": "https://urgent.news/2026/10/17/i-logged-every-status-code-scraping-ebay-sold-listings-the-block-is",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-17T18:29:56.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/sam_compsapi/i-logged-every-status-code-scraping-ebay-sold-listings-the-block-is-not-where-you-think-gb9"
  },
  "original_language": "en",
  "account": "A reporter conducted a detailed investigation into the behavior of eBay's sold listings by scraping their search results and documenting every status code. The key findings revealed that the tutorials instructing readers on how to scrape these listings were inaccurate and misleading.\n\nThe initial attempt using a simple script returned a 403 status code, along with a 1,832-byte error page titled \"Error Page | eBay.\" Interestingly, removing the sold flags from the request also resulted in a 403 status code. This indicated that the issue was not related to the sold data itself, but rather the request not appearing to be from a typical browser.\n\nBy adjusting the headers to mimic a real browser, the reporter discovered that the same request yielded vastly different results depending on whether it was directed towards an active search or a sold search. The active search returned a 200 status code with a page containing 67 listing IDs, while the sold search returned a 302 status code with an empty body. This highlighted a significant difference in how eBay handles these two types of searches.\n\nFurther experimentation revealed that the problem stemmed from the address used for the requests. After retrying the sold URL multiple times with varying intervals, the reporter found that the 403 status code persisted even when attempting to switch between active and sold searches. This pointed to address reputation as the dominant factor affecting the success of the scraper.\n\nPerhaps the most crucial discovery was the incorrect parsing of HTML elements in the tutorials. The selector used, .s-item__price, returned zero elements in the successful 200 response, while the correct selector, .s-card__price, contained the actual price information (70 instances in the example provided). This discrepancy underscored the importance of staying updated on any changes to eBay's search markup.\n\nThe article concluded by discussing eBay's decision to retire its Finding API, which returned sold listings, and the limited availability of sold data through other means like Marketplace Insights API. The author emphasized that obtaining sold listings requires managing user accounts, handling authentication, and dealing with potential challenges, all of which constitute a significant operational burden for scraper projects.",
  "summary": "Every tutorial for this is the same twelve lines. I ran them today, logged every status code, and the interesting part is not that it failed. It is where it failed, which turns out to be a different place than the tutorials assume. All numbers below are from 17 October 2026, from one residential address, in the order shown. Attempt 1: the twelve lines import requests url = \"…",
  "key_points": [
    "eBay sold listings scraped with inaccurate tutorials",
    "403 status code returned when mimicking browser requests",
    "Incorrect HTML parsing caused by outdated search markup"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}