Azerty APIazerty.nl ↗
Search the azerty.nl Dutch IT retailer catalog. Get product names, EUR prices (incl./excl. VAT), delivery info, and product URLs via one endpoint.
What is the Azerty API?
The Azerty.nl API gives developers access to the azerty.nl product catalog through a single search_products endpoint that returns up to 10 fields per product card, including EUR prices with and without VAT, delivery status in Dutch, and direct product URLs. It covers the full keyword-searchable range of IT hardware and consumer electronics listed on the site, with support for pagination and sort ordering.
curl -X GET 'https://api.parse.bot/scraper/bc9a5fa8-6431-42f2-bb05-05a248f0d26b/search_products?sort=popularity&query=logitech+mx+master' \ -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 azerty-nl-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: azerty.nl product search — bounded, re-runnable."""
from parse_apis.azerty_nl_api import Azerty, SortOrder, InvalidInput
client = Azerty()
# Search for a popular product line, capped at 5 results.
for product in client.products.search(query="logitech mx master", limit=5):
print(f"{product.name} €{product.price_incl_vat:.2f} incl. VAT")
# Drill into the cheapest-first result for a broader query.
cheapest = client.products.search(
query="mechanical keyboard", sort=SortOrder.PRICE_ASC, limit=1
).first()
if cheapest is not None:
print(f"\nCheapest keyboard: {cheapest.name}")
print(f" Price excl. VAT: €{cheapest.price_excl_vat:.2f}")
print(f" Delivery: {cheapest.delivery}")
print(f" URL: {cheapest.url}")
# Demonstrate the typed error for an invalid sort value.
try:
client.products.search(query="monitor", sort="banana", limit=1).first()
except InvalidInput:
print("\nCaught InvalidInput for unsupported sort value.")
print("\nexercised: products.search (pagination, sort enum, error handling)")
Keyword search over the azerty.nl product catalog. One round trip returns one page of product cards: product_id, name, short description, price_incl_vat and price_excl_vat (EUR, as shown on the site), delivery indication (Dutch text as displayed) and the product page URL. total_results is the site's reported result count for the query; has_more is true when the site offers a next page. Pagination is caller-controlled: page (1-based, default 1) and page_size (the site accepts 12, 24 or 36; default 24). sort selects the site's result ordering (default popularity). Some generic keywords (for example a category name like 'laptop') are redirected by the site to a category listing; in that case redirected_to carries the category URL and products/total_results reflect that listing, otherwise redirected_to is null. A query with no matches returns an empty products array with total_results 0.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based result page number. |
| sort | string | Result ordering, one of the site's sort menu options. |
| queryrequired | string | Free-text search keywords, e.g. a brand and model name. |
| page_size | integer | Products per page; the site accepts exactly 12, 24 or 36, other values are rejected. |
{
"type": "object",
"fields": {
"page": "integer page returned",
"sort": "sort code applied",
"query": "echo of the search keywords",
"has_more": "boolean, true when a next page exists",
"products": "array of product cards on this page",
"page_size": "integer products per page requested",
"redirected_to": "category listing URL when the site redirected the keyword to a category, otherwise null",
"total_results": "integer total matching products reported by the site (0 when nothing matches)",
"products[].url": "product page URL",
"products[].name": "product title",
"products[].currency": "ISO currency code of the prices (EUR)",
"products[].delivery": "delivery-time indication as displayed (Dutch), null when absent",
"products[].product_id": "string site product id",
"products[].description": "short spec line shown under the title, null when absent",
"products[].price_excl_vat": "number, price excluding VAT in EUR",
"products[].price_incl_vat": "number, price including VAT in EUR"
},
"sample": {
"data": {
"page": 1,
"sort": "popularity",
"query": "logitech mx master",
"has_more": true,
"products": [
{
"url": "https://azerty.nl/product/logitech-master-series-mx-master-3s-for-business-muis/4976738",
"name": "Logitech Master Series MX Master 3S for Business - Muis",
"currency": "EUR",
"delivery": "Volgende werkdag in huis",
"product_id": "950420",
"description": "ergonomisch - rechtshandig - optisch",
"price_excl_vat": 77.87,
"price_incl_vat": 94.22
}
],
"page_size": 24,
"redirected_to": null,
"total_results": 52
},
"status": "success"
}
}About the Azerty API
What the API Returns
The search_products endpoint accepts a free-text query (required) and returns a paginated list of product cards from the azerty.nl catalog. Each card includes products[].name, products[].url, price_incl_vat, price_excl_vat (both in EUR, matching what the site displays), a short description, a delivery indication in Dutch as shown on the site, and an internal product_id. The response also includes total_results so you can gauge how many matches exist for a given query.
Pagination and Sorting
Results are paged using the page parameter (1-based). The page_size parameter controls how many products appear per page, but only the values 12, 24, or 36 are accepted — any other value is rejected. The has_more boolean tells you whether a subsequent page exists without requiring a separate count call. Sort ordering can be set via the sort parameter using the same sort options the site exposes in its sort menu.
Redirects and Edge Cases
When a keyword search on azerty.nl resolves to a category listing rather than a standard search results page, the response includes a non-null redirected_to field containing the category URL. When no products match, total_results returns 0 and products is an empty array. The query field in the response echoes back the original search keywords for correlation when batching multiple requests.
The Azerty API is a managed, monitored endpoint for azerty.nl — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when azerty.nl 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 azerty.nl 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 (incl. and excl. VAT) for specific IT hardware models on azerty.nl over time
- Build a Dutch-market price comparison tool using EUR prices from the azerty.nl catalog
- Monitor delivery availability for components by checking the Dutch delivery indication field
- Aggregate product listings from azerty.nl by brand or model using keyword queries
- Sync azerty.nl product URLs and names into an internal product database for procurement teams
- Identify which search terms redirect to category pages using the
redirected_toresponse field
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does azerty.nl have an official developer API?+
What does the `search_products` endpoint return for each product?+
product_id, name, short description, price_incl_vat and price_excl_vat in EUR, a delivery indication in Dutch text, and the product page url. The response also carries top-level metadata: total_results, has_more, page, page_size, sort, and redirected_to.Are there restrictions on the `page_size` parameter?+
page_size parameter only accepts the values 12, 24, or 36. Passing any other integer will result in a rejected request. This mirrors the pagination options available on the azerty.nl site.