Krisha APIkrisha.kz ↗
Search and retrieve property listings from krisha.kz. Access sale and rental data for apartments, houses, and commercial properties across Kazakhstan.
What is the Krisha API?
The Krisha.kz API exposes 3 endpoints for searching and retrieving property listings from Kazakhstan's largest real estate marketplace. Use search_listings to query apartments, houses, land, and commercial properties by city, deal type, room count, and price range, then pull full listing details — including coordinates, photos, area, and seller information — via get_listing_detail.
curl -X GET 'https://api.parse.bot/scraper/320b67d0-20cf-468a-a587-d9fd52942a2d/search_listings?city=almaty&page=1&rooms=2&price_to=50000000&deal_type=prodazha&price_from=10000000&property_type=kvartiry' \ -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 krisha-kz-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.
"""Krisha.kz Real Estate API — search listings, drill into details, get contacts."""
from parse_apis.krisha.kz_real_estate_api import Krisha, DealType, PropertyType, ListingNotFound
client = Krisha()
# Search for 2-room apartments for sale in Almaty, capped at 5 results.
for summary in client.listingsummaries.search(
deal_type=DealType.SALE,
property_type=PropertyType.APARTMENTS,
city="almaty",
rooms="2",
limit=5,
):
print(summary.id, summary.price_text)
# Drill into the first result's full details.
first = client.listingsummaries.search(
deal_type=DealType.RENT,
property_type=PropertyType.APARTMENTS,
city="astana",
limit=1,
).first()
if first:
listing = first.details()
print(listing.title, listing.price, listing.full_address, listing.rooms)
# Get contact info for that listing.
contact = listing.contact()
print(contact.owner_name, contact.user_type, contact.message)
# Direct lookup by known listing ID with typed error handling.
try:
detail = client.listings.get(listing_id="670279234")
print(detail.title, detail.price, detail.address_title)
except ListingNotFound as exc:
print(f"Listing gone: {exc.listing_id}")
print("exercised: listingsummaries.search / summary.details / listing.contact / listings.get")
Search for real estate listings on krisha.kz with filters for deal type, property type, city, rooms, and price range. Returns paginated results with listing summaries including id, price, title, and description snippet. Pagination is page-based with ~20 listings per page. The total_count field reports the full result-set size as a formatted string.
| Param | Type | Description |
|---|---|---|
| city | string | City slug to filter by (e.g., 'almaty', 'astana'). Omitting returns listings from all cities. |
| page | integer | Page number for pagination (1-based). |
| rooms | string | Number of rooms to filter by, comma-separated for multiple values (e.g., '2' or '2,3'). |
| price_to | integer | Maximum price filter in tenge. |
| deal_type | string | Type of deal. |
| price_from | integer | Minimum price filter in tenge. |
| property_type | string | Property type to search. |
{
"type": "object",
"fields": {
"listings": "array of listing objects each with id, price_text, title, subtitle, description_snippet",
"listing_ids": "array of integer listing IDs from window.data",
"total_count": "string with total number of matching listings (formatted with spaces)",
"current_page": "integer indicating the current page number"
},
"sample": {
"data": {
"listings": [
{
"id": "1012655159",
"price_text": "30 000 000 ₸"
},
{
"id": "1012600459",
"price_text": "30 000 000 ₸"
}
],
"listing_ids": [
1012655159,
1012600459
],
"total_count": "44 130",
"current_page": 1
},
"status": "success"
}
}About the Krisha API
What the API covers
The Krisha.kz API gives structured access to sale and rental listings across Kazakhstan. search_listings accepts filters for city (slug values like almaty or astana), deal_type (prodazha for sale, arenda for rent), property_type (kvartiry, doma-dachi, kommercheskie, uchastki), rooms (comma-separated values), and price_from/price_to in tenge. Responses include a listings array with per-listing id, price_text, title, subtitle, and description_snippet, along with a flat listing_ids array and a total_count string for pagination planning.
Listing detail data
get_listing_detail takes a listing_id from search results and returns the full advert object: price, addressTitle, square, rooms, photos, map coordinates, description, and ownerName. The adverts array adds card-level data including fullAddress and priceM2 (price per square meter), which is useful for comparative analysis across neighborhoods.
Contact information
get_listing_contact returns owner_name, user_type (distinguishing private owners from agents), and the listing_id. Full phone numbers are not returned directly — the response includes a phones_url path and a note that phone retrieval requires solving a reCAPTCHA challenge on the source site. Plan your contact-retrieval workflows around this constraint.
The Krisha API is a managed, monitored endpoint for krisha.kz — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when krisha.kz 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 krisha.kz 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?+
- Aggregate apartment listings in Almaty and Astana filtered by room count and price range for a property search app
- Track price-per-square-meter trends across neighborhoods using the
priceM2field fromget_listing_detail - Identify whether a listing is from a private owner or an agent using the
user_typefield inget_listing_contact - Build a map-based property browser using
mapcoordinates returned in theadvertobject - Monitor new commercial property listings (
kommercheskie) in a target city by pollingsearch_listingswithdeal_typeandproperty_typefilters - Compare land listings (
uchastki) for sale within a defined tenge price band across multiple cities
| 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 krisha.kz have an official developer API?+
What does `search_listings` return and how does pagination work?+
search_listings returns a listings array with summary fields (id, price_text, title, subtitle, description_snippet), a flat listing_ids array, a total_count string, and a current_page integer. Use the page parameter to iterate through results. total_count is returned as a string, so parse it to an integer before using it for page-count arithmetic.Can I retrieve full phone numbers for listing owners?+
get_listing_contact returns owner_name and user_type without requiring any challenge, but full phone numbers are gated behind a reCAPTCHA on the source site. The phones_url field points to where phone data can be fetched, but automated retrieval of phone numbers is not supported by this API.Does the API cover new-development (zhk / жилой комплекс) project pages?+
search_listings and detailed via get_listing_detail. New-development project profiles and developer-level data are not exposed. You can fork this API on Parse and revise it to add an endpoint targeting those project pages.Are listings from cities outside Almaty and Astana available?+
city parameter in search_listings returns listings across all cities on krisha.kz. You can also pass other city slugs supported by the site. Coverage depends on listing volume in each city, which varies significantly outside the two major urban centers.