Kontakt APIkontakt.az ↗
Fetch product titles, prices, images, SKU, brand, and availability from kontakt.az in Azerbaijani or Russian via a single API endpoint.
What is the Kontakt API?
The Kontakt.az API exposes 9 structured fields per product from Azerbaijan's major electronics retailer through a single get_product endpoint. Supply a product URL slug and optionally a language code to retrieve the product title, current and historical pricing, gallery images, SKU, brand, availability status, and full description — in either Azerbaijani or Russian.
curl -X GET 'https://api.parse.bot/scraper/30743c65-a2d9-4ef0-bef6-844270908190/get_product?language=az&product_slug=iphone-17-pro-max-256-gb-deep-blue' \ -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 kontakt-az-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: Kontakt.az product lookup in both languages."""
from parse_apis.kontakt_az_api import KontaktAz, Language, InputNotFound
client = KontaktAz()
# Fetch a product in Azerbaijani (default language).
try:
product = client.products.get(product_slug="iphone-17-pro-max-256-gb-deep-blue")
except InputNotFound:
print("Product not found")
raise SystemExit
print(product.title, "-", product.brand)
print(f"Price: {product.current_price} {product.currency}")
if product.old_price is not None:
print(f"Was: {product.old_price} {product.currency}")
print(f"SKU: {product.sku} Availability: {product.availability}")
print(f"Images: {len(product.images)}")
# Same product in Russian via the Language enum.
product_ru = client.products.get(
product_slug="iphone-17-pro-max-256-gb-deep-blue",
language=Language.RU,
)
print(f"Russian title: {product_ru.title}")
# Alternate-language URLs live on the hreflang_urls object.
print(f"AZ URL: {product.hreflang_urls.az}")
print(f"RU URL: {product.hreflang_urls.ru}")
print("exercised: products.get / Language enum / InputNotFound")
Fetch product details from kontakt.az by URL slug. Returns the product title, description, gallery images, current and old prices, SKU, brand, availability, and alternate language URLs. When language is 'ru', the scraper first fetches the Azerbaijani page to discover the Russian hreflang URL, then fetches and parses the Russian page — so the Russian call makes two requests. The product_slug is always the Azerbaijani slug (visible in the kontakt.az product URL).
| Param | Type | Description |
|---|---|---|
| language | string | Language for the product page content. 'az' for Azerbaijani (default), 'ru' for Russian. |
| product_slugrequired | string | Product URL slug from kontakt.az (e.g. 'iphone-17-pro-max-256-gb-deep-blue'). This is the path segment after kontakt.az/ in the product page URL. |
{
"type": "object",
"fields": {
"sku": "Product SKU code",
"url": "Final URL of the fetched product page",
"brand": "Brand name",
"title": "Product title",
"images": "Array of product gallery image URLs",
"currency": "Price currency code (e.g. AZN)",
"old_price": "Original price before discount, or null if no discount",
"description": "Full product description text",
"availability": "'in_stock' or 'out_of_stock'",
"current_price": "Current/sale price as a number",
"hreflang_urls": "Object mapping language codes to alternate product page URLs"
},
"sample": {
"data": {
"sku": "TM-DG-SBP-1105-SM-3742",
"url": "https://kontakt.az/iphone-17-pro-max-256-gb-deep-blue",
"brand": "APPLE",
"title": "iPhone 17 Pro Max 256 GB Deep Blue",
"images": [
"https://kontakt.az/media/catalog/product/cache/737893520c2fd7cbe0683eaae886a669/t/m/tm-dg-sbp-1105-sm-3742_1.png",
"https://kontakt.az/media/catalog/product/cache/737893520c2fd7cbe0683eaae886a669/t/m/tm-dg-sbp-1105-sm-3742_2.png"
],
"currency": "AZN",
"old_price": 4099.99,
"description": "Məhsul təsviri - iPhone 17 Pro Max 256 GB Deep Blue ...",
"availability": "in_stock",
"current_price": 3589.99,
"hreflang_urls": {
"az": "https://kontakt.az/iphone-17-pro-max-256-gb-deep-blue",
"ru": "https://kontakt.az/ru/iphone-17-pro-max-256-gb-deep-blue-ru"
}
},
"status": "success"
}
}About the Kontakt API
What the API Returns
The get_product endpoint accepts a product_slug — the path segment identifying a product on kontakt.az, such as iphone-17-pro-max-256-gb-deep-blue — and returns a structured object with 9 fields: sku, url, brand, title, images, currency, old_price, current_price, description, and availability. Prices are returned as numbers with a separate currency field (typically AZN). When a product is on sale, old_price holds the pre-discount figure; otherwise it is null.
Language Support
The optional language parameter accepts 'az' (Azerbaijani, default) or 'ru' (Russian). Switching to Russian returns all text fields — title, description — in Russian, reflecting how the product is listed on the Russian-language version of the site. The url field in the response reflects the final resolved page URL for whichever language was requested.
Availability and Images
The availability field returns either 'in_stock' or 'out_of_stock', giving a clear boolean-equivalent signal for inventory checks. The images field is an array of full gallery image URLs, covering all product photos listed on the page — useful for catalog display or visual comparison workflows.
The Kontakt API is a managed, monitored endpoint for kontakt.az — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when kontakt.az 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 kontakt.az 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?+
- Monitor price drops on specific electronics by comparing
current_priceandold_priceover time - Build a bilingual (Azerbaijani/Russian) electronics catalog using the
languageparameter - Track stock availability for SKUs using the
availabilityfield in inventory dashboards - Populate product cards with title, brand, and gallery
imagesfor affiliate or comparison sites - Extract SKU codes to cross-reference kontakt.az listings with supplier or warehouse databases
- Alert customers when
old_pricebecomes non-null, indicating a new discount has been applied
| 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 kontakt.az have an official public developer API?+
What does `old_price` return when a product is not discounted?+
old_price is returned as null. A non-null old_price value always indicates the product currently has a reduced current_price relative to its original listing price.Does the API cover product reviews or customer ratings?+
Can I retrieve a list of products from a category page rather than a single product?+
get_product and a single product_slug. You can fork it on Parse and revise to add a category or search listing endpoint.How does the Russian language lookup work when a `language` of 'ru' is provided?+
language is set to 'ru', the API resolves the correct Russian-language URL for the product and returns all text fields in Russian. The url field in the response will reflect the Russian page URL that was ultimately fetched.