Saturn APIsaturn.de ↗
Search Saturn.de products, retrieve pricing, EAN, seller identity, and check per-store pickup availability by German postal code across 3 endpoints.
What is the Saturn API?
The Saturn.de API covers 3 endpoints that return live product data from Saturn.de, Germany's major consumer electronics retailer. Use search_products to run full-text queries and get article numbers, prices, and delivery status across multiple results pages. Use get_product_detail to retrieve 10+ fields per product including EAN, merchant name, shipping cost, and availability. Use get_store_availability to check which Saturn branches near a given postal code have an item in stock for pickup.
curl -X GET 'https://api.parse.bot/scraper/8f2ede97-8f81-43c8-a7b2-f6d27a78d288/search_products?page=1&query=Midea+PortaSplit' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace saturn-de-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Saturn DE SDK — bounded, re-runnable; every call capped."""
from parse_apis.saturn_de_api import Saturn, ProductNotFound
client = Saturn()
# Search for a specific air conditioner by keyword
for product in client.products.search(query="Midea PortaSplit", limit=3):
print(product.name, product.price, product.is_marketplace, product.merchant_name)
# Drill into one result: get full detail by article number
hit = client.products.search(query="Midea PortaSplit", limit=1).first()
try:
detail = client.products.get(article_number=hit.article_number)
print(detail.name, detail.ean, detail.price, detail.delivery_status)
print("Seller:", detail.merchant_name, "| Marketplace:", detail.is_marketplace)
except ProductNotFound as e:
print("Product gone:", e.article_number)
# Check per-store pickup availability near Leipzig
for store in client.product(article_number=hit.article_number).stores.list(postal_code="04103", limit=3):
print(store.store_name, store.city, store.pickup_status, store.pickup_available)
print("exercised: products.search / products.get / product.stores.list")
Full-text product search on Saturn.de. Returns article number, name, price, delivery status, marketplace/seller identity, and EAN for each hit. Results are auto-iterated by page.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based page number for paginated results. |
| queryrequired | string | German-language search keyword (e.g. 'Midea PortaSplit', 'mobiles Klimagerät'). |
{
"type": "object",
"fields": {
"page": "integer current page number",
"total": "integer total number of matching products",
"products": "array of product summaries with article_number, name, price, currency, shipping_cost, delivery_status, delivery_earliest, online_status, is_marketplace, merchant_name, ean"
},
"sample": {
"data": {
"page": 1,
"total": 12,
"products": [
{
"ean": "4048164116478",
"name": "MIDEA PortaSplit Klimaanlage Weiß / Grau (Max. Raumgröße: 42 m², EEK: A++)",
"price": 2499.99,
"currency": "EUR",
"merchant_name": "Collectronics",
"online_status": "MP_OFFER",
"shipping_cost": 0,
"article_number": "142245268",
"is_marketplace": true,
"delivery_status": "AVAILABLE_WITHIN_REASONABLE_TIME_FRAME",
"delivery_earliest": "2026-07-29T20:59:59.999Z"
}
]
},
"status": "success"
}
}About the Saturn API
Search and Product Data
search_products accepts a German-language query string (e.g. 'mobiles Klimagerät') and an optional page parameter for paginated results. Each item in the products array includes article_number, name, price, currency, shipping_cost, delivery_status, and delivery_earliest, as well as seller identity and EAN. The total field tells you how many matching products exist across all pages, making it straightforward to build a full result set.
Product Detail
get_product_detail takes a single article_number — obtainable from search_products — and returns the full record for that item. Key fields include ean (GTIN barcode), manufacturer, merchant_name (either 'Saturn' for first-party listings or the third-party seller name for marketplace items), is_available (boolean), online_status, pickup_status, price, and shipping_cost. The merchant_name field is particularly useful for distinguishing Saturn-fulfilled products from marketplace sellers on the same platform.
Store Pickup Availability
get_store_availability maps a product to physical Saturn branches. You supply an article_number and a German 5-digit postal code (postal_code, e.g. '04103' for Leipzig). The response returns a stores array where each entry includes the branch address, pickup availability status, and estimated collection time when available. This is useful for last-mile logistics tooling, in-store inventory dashboards, or any application where customers need to know which nearby location holds stock right now.
The Saturn API is a managed, monitored endpoint for saturn.de — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when saturn.de changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official saturn.de API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track price changes on specific Saturn.de article numbers over time using get_product_detail
- Identify which Saturn marketplace sellers are undercutting first-party pricing via the merchant_name field
- Build a store-level stock checker for a product by iterating get_store_availability across multiple postal codes
- Aggregate EAN/GTIN codes from Saturn listings to cross-reference with other retailer databases
- Monitor delivery_status and delivery_earliest fields to detect out-of-stock or delayed items
- Search Saturn.de catalog by category keyword and collect article numbers for downstream enrichment
- Alert users when is_available changes from false to true for a watched article number
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Saturn.de offer an official developer API?+
How does get_store_availability determine which stores to return?+
postal_code parameter — a German 5-digit PLZ — to locate Saturn branches near that area. Each store in the stores array includes its address, pickup availability status, and estimated collection time where the branch provides one. You must also supply an article_number from search_products or get_product_detail.Can I tell from the response whether a product is sold by Saturn directly or by a third-party marketplace seller?+
merchant_name field in get_product_detail contains 'Saturn' for first-party fulfilled products and the seller's name for marketplace listings. The online_status and pickup_status fields reflect availability independently of seller identity.Does the API return customer reviews or ratings for products?+
Are search results limited to a specific number of products per page, and how do I retrieve more?+
total field in the response tells you the full match count, and you can increment the page parameter (1-based) to retrieve subsequent pages. The API iterates pages automatically when you advance the parameter, so no separate session or cursor token is needed.