# eBay Germany Sold Listings API (2026): ebay.de Sold Prices as JSON

> Yes, you can get eBay Germany (ebay.de) sold listings through an API: CompSniper returns up to 240 ebay.de sales per request with real EUR prices, German condition labels and private seller filters, plus up to 3 years of history. Tested request and response inside.

Source: https://compsniper.com/guides/ebay-germany-sold-listings-api

---

Regional API guide

# eBay Germany Sold Listings API (2026): ebay.de Sold Prices as JSON

To get eBay Germany sold listings with an API, call CompSniper's `GET /v1/scrape` with `ebaySite=ebay.de`. The response includes sold comps, prices, currency and sale dates, while preserving German condition text. You can also use the documented private/business seller filter for more focused comparisons.

By [Marc Andrew](https://compsniper.com/about) September 22, 2026 Tested with a real ebay.de search

## Search ebay.de for completed sales

Create a [free CompSniper account](https://compsniper.com/signup), copy the full `cs_live_` API key and set it as `COMPSNIPER_API_KEY` in your backend environment. The domain goes in a query parameter, not in the request hostname: the API hostname remains `api.compsniper.com`.

This tested request searches used Sony Alpha 6400 cameras on ebay.de. It asks for five recently ended sold listings. The product name is kept specific without assuming that every result is a camera body with the same lens or accessories.

German sold listings

```
curl --get --fail-with-body --max-time 75 "https://api.compsniper.com/v1/scrape" \
  --header "Authorization: Bearer $COMPSNIPER_API_KEY" \
  --data-urlencode 'keyword=Sony Alpha 6400' \
  --data-urlencode 'ebaySite=ebay.de' \
  --data-urlencode 'count=5' \
  --data-urlencode 'itemCondition=used' \
  --data-urlencode 'sortOrder=endedRecently' \
  --data-urlencode 'sold=true'
```

In Postman, use GET, select Bearer Token authentication and put the search fields under Params. Keep `itemCondition=used` in English: it is the API parameter value, even when returned condition labels are German.

## A real ebay.de response in EUR

We ran the request above on September 22, 2026 at 05:47:50 UTC. It returned HTTP 200 and five listings. This excerpt shows selected fields from one of those five rows; the other rows and top-level fields are omitted. Values are unchanged.

Real response excerpt

```
{
  "keyword": "Sony Alpha 6400",
  "totalItems": 5,
  "items": [
    {
      "itemId": "147570780562",
      "title": "Sony Alpha a6400 24.2MP Digitalkamera - fast neu mit Garantie - Alpha 6400",
      "condition": "Gebraucht | Privat",
      "conditionId": 3000,
      "soldPrice": "500.00",
      "soldCurrency": "EUR",
      "shippingPrice": null,
      "shippingCurrency": null,
      "shippingType": "unknown",
      "totalPrice": "500.00",
      "endedAt": "2026-09-20",
      "scrapedAt": "2026-09-22T05:47:49.221623+00:00",
      "itemLocation": null,
      "sellerType": "private",
      "bestOfferAccepted": null,
      "url": "https://www.ebay.de/itm/147570780562?nordt=true"
    }
  ]
}
```

`endedAt` is the reported sale date; `scrapedAt` is the collection timestamp. Repeating the request can return different listings. `totalItems: 5` describes the original response, not the one-row excerpt.

This selected row reports a sold price of **EUR 500.00**, a sale date of **September 20, 2026** and the condition text **Gebraucht | Privat**. The sale date is two days before collection; those dates describe different events and should remain separate in your database.

## Preserve German labels instead of matching only Used

An integration that checks `condition === "Used"` would miss this German listing. Store the original `condition` and use the best-effort `conditionId` when present. Our sample maps the used label to `3000`. Unknown or category-specific labels can have a null ID; do not turn those into an assumed condition.

| Label | How to read it |
| --- | --- |
| Gebraucht | Used condition. Inspect the listing details for wear and included accessories. |
| Neu | New, not an equivalent condition to a used camera. |
| Als Ersatzteil / defekt | For parts or defective, not a working-camera comparable. |
| Privat | Seller classification, not a condition grade. |

eBay's [German condition reference](https://www.ebay.de/help/selling/listings/artikelzustand-nach-kategorie?id=4765) explains that definitions vary by category. Refurbished tiers and clothing grades need their own interpretation; a broad used filter is not a guarantee of identical condition.

## Separate private and business seller comparisons

The Germany marketplace supports `sellerType=private` and `sellerType=business` in CompSniper. This can help you keep seller groups separate when researching prices. It filters recognized source labels; it does not independently verify a seller's legal status, tax treatment or warranty.

Here is the documented private-seller variation. It was not used for the recorded response above. Replace `private` with `business` for the other group.

Optional private-seller filter

```
curl --get --fail-with-body --max-time 75 "https://api.compsniper.com/v1/scrape" \
  --header "Authorization: Bearer $COMPSNIPER_API_KEY" \
  --data-urlencode 'keyword=Sony Alpha 6400' \
  --data-urlencode 'ebaySite=ebay.de' \
  --data-urlencode 'count=5' \
  --data-urlencode 'itemCondition=used' \
  --data-urlencode 'sortOrder=endedRecently' \
  --data-urlencode 'sold=true' \
  --data-urlencode 'sellerType=private'
```

Rows without a recognized seller label are excluded when this filter is active. Fewer results can therefore reflect missing labels, not the absence of sales. The [API reference](https://compsniper.com/docs/api-reference) lists its supported marketplaces; this filter is not a general UK or Australia seller classifier.

## Read EUR correctly and keep unknown postage unknown

The sample's `soldCurrency` is EUR and its decimal string is `"500.00"`. You can display that using German number formatting, but keep the raw numeric value and currency separately. Do not replace the currency label on a US-dollar price to create a German comparable.

totalPrice is not proof of free delivery

In all five rows of this German sample, postage was unknown. The selected row has `shippingPrice: null`, `shippingCurrency: null` and `shippingType: "unknown"`. Its `totalPrice` still equals EUR 500.00. Treat that as an incomplete delivery total, not as evidence that postage cost zero.

Keep item-only comparisons separate from known item-plus-postage comparisons. When shipping is present, verify its currency before adding it. A sold search is not an invoice and should not be used to infer a VAT breakdown or a buyer's complete checkout charges.

## Make the camera sample useful for valuation

The recorded Sony search included different accessory descriptions, including a kit-lens bundle. Before calculating a price for your camera, decide whether you are comparing body-only units or kits, then check included lenses, batteries and stated condition. A shutter-count claim in a title is useful context, not an independently tested specification.

Keep `ebaySite`, `itemId`, `soldCurrency` and `endedAt` with every stored row. Searching ebay.de does not prove the item is located in Germany; the selected row's location is unknown. Likewise, a true `bestOfferAccepted` marker does not reveal the hidden accepted amount.

For a larger sample, raise `count` up to 240 and follow the documented pagination fields. Fewer rows or an empty array can be valid. Handle temporary failures using bounded retries and the [error reference](https://compsniper.com/docs/errors), rather than converting an error into a zero-price result.

## Common questions about eBay Germany sold listings

### How do I get eBay Germany sold listings through an API?

Call CompSniper GET /v1/scrape with ebaySite=ebay.de, a product keyword and your CompSniper Bearer API key. It returns sold listings as JSON. The example in this guide returned EUR prices and preserved the German condition label Gebraucht | Privat.

### Does the Germany endpoint use a separate API key?

No. Use the same CompSniper key and endpoint as other supported eBay marketplaces. Set ebaySite=ebay.de explicitly. The API does not infer the marketplace from your server's country.

### Can I filter German sold comps by private or business seller?

Yes. The documented sellerType query parameter accepts private or business on ebay.de. Rows without a recognized seller label are excluded when that filter is active. The recorded sample did not apply a sellerType filter, even though its selected row was labeled private.

### What does Gebraucht | Privat mean in the response?

Gebraucht is the used-condition label and Privat identifies a private seller label. CompSniper preserves the source text and also returns conditionId and sellerType where recognized. In the example these are 3000 and private. Keep the original text because category-specific condition labels are not always mapped.

### Is shipping free when shippingPrice is null?

No. In the German sample, shippingPrice and shippingCurrency are null and shippingType is unknown. totalPrice equals soldPrice, but that does not establish free postage or a complete delivered price.

### Can I combine Germany and UK sold prices in one median?

Not as raw numbers. Preserve each row's marketplace and soldCurrency. Compare equivalent condition and bundle contents within each currency first; if you later convert currencies, retain the original value and document the exchange rate and its date.

## Continue your integration

Keep each marketplace and currency attached to its own sold comps. These guides use the same endpoint and API key:

- [How to Get eBay Australia Sold Listings with an API](https://compsniper.com/guides/ebay-australia-sold-listings-api)
- [eBay UK Sold Listings API (2026): ebay.co.uk Sold Prices as JSON](https://compsniper.com/guides/ebay-uk-sold-listings-api)
- [How to Get eBay France Sold Listings with an API](https://compsniper.com/guides/ebay-france-sold-listings-api)
- [How to Get eBay Spain Sold Listings with an API](https://compsniper.com/guides/ebay-spain-sold-listings-api)
- [How to Get eBay Canada Sold Listings with an API](https://compsniper.com/guides/ebay-canada-sold-listings-api)

For the full contract, see the [API reference](https://compsniper.com/docs/api-reference). The [eBay sold listings API overview](https://compsniper.com/ebay-sold-listings-api) covers the product, and the [CSV and Excel guide](https://compsniper.com/guides/export-ebay-sold-listings-csv-excel) covers spreadsheet exports.

Written by the CompSniper team. The examples are dated observations, not current valuations or evidence of complete market coverage. CompSniper is an independent service, not an official eBay API.

## Try your first ebay.de sold search

Create a free CompSniper account, get an API key and run the request above. The free plan includes 100 requests per month, with no credit card required.

[Get your free API key](https://compsniper.com/signup)[Read the quickstart](https://compsniper.com/docs/quickstart)

---

CompSniper: real sold prices from eBay (8 sites), PSA, TCGplayer, Grailed, Depop, Poshmark and Mercari through one API. Free plan, 100 requests a month: https://compsniper.com/signup. Pricing: https://compsniper.com/pricing. All Markdown pages: https://compsniper.com/llms.txt
