# Bina.az Real Estate Scraper: Listings, Agencies, New Builds (`recordsdata/bina-az-scraper`) Actor

Scrape Bina.az real estate in Azerbaijan: sale, rent and daily rent listings with prices, areas, rooms, coordinates and photos, plus agencies and new-build complexes with unit prices. Export CSV, Excel, JSON, XML.

- **URL**: https://apify.com/recordsdata/bina-az-scraper.md
- **Developed by:** [RecordsData](https://apify.com/recordsdata) (community)
- **Categories:** Real estate, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 property listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

![RecordsData](https://api.apify.com/v2/key-value-stores/AAm3a1h3Z9nYfrvh9/records/banner?v=3)

## 🏠 Bina.az Real Estate Scraper: Azerbaijan Listings, Agencies & New Builds

> **Bina.az Real Estate Scraper exports property ads from bina.az, the main real estate marketplace of Azerbaijan, as structured data: price in AZN, rooms, area, floor, address, coordinates, photos, description, seller type and the agency behind each ad. It also returns the agency directory and the new-build complexes with their unit prices. Export CSV, Excel, JSON or XML. No login, no API key, no proxy.**

The Bina.az Real Estate Scraper turns the Azerbaijani property market into a dataset you can filter, sort and join. On 2026-10-11 the live catalog held about 110,800 ads: 79,800 for sale, 29,762 monthly rentals and 1,217 daily rentals, in 71 cities, from 454 agencies, plus 72 new-build residential complexes. The Actor reads the same JSON service the bina.az website uses for its own pages, so a run is fast: no browser, no proxy and no HTML parsing.

### 🎯 What does the Bina.az scraper do?

- Scrapes **bina.az property ads**: apartments (new-build and resale), houses and country houses, offices, garages, land and commercial premises, for sale, monthly rent and daily rent.
- Returns **price, currency, price per square meter, area, land area, rooms, floor, total floors, renovation, title deed and mortgage flags, and the update time** of every ad.
- Gives **address, district or metro station, city, nearby places and exact latitude and longitude** (coordinates are present on all ads checked).
- Returns **all photos and the full description** of each ad (set Fetch full ad details on, the default).
- Tells you **who sells**: private owner, agency or developer, the contact type (owner or agent), and for agency ads the agency name, page, logo, address, opening hours and active ad count.
- Filters by **operation, property type, city, district or metro, rooms, price, area, land area, floor, floor position, building type, featured or premium ads, title deed, mortgage, renovation, developer financing, new-build complexes and agency**, and sorts by newest, price, area or price per sot.
- Starts from **search page URLs, ad URLs, agency pages or complex pages**, or from a plain list of ad ids.
- Builds **agency rows** (the whole directory of 454 agencies) and **new-build complex rows** (developer, completion date, price range, unit types, facilities, offers, building facts) plus **unit rows** with the area and price of each apartment type.
- Has an **only-new mode** for scheduled runs: you get just the ads that were not in your previous run of the same search.

### 📊 Bina.az property data: which fields do you get?

Every row is one record with `recordType` set to `listing`, `agency`, `residence` or `residence-unit`. A listing row carries about 50 of the 89 columns, depending on what the ad states.

| Group | Fields |
|---|---|
| Identity | `listingId`, `url`, `title`, `recordType`, `operation`, `sourceSite`, `scrapedAt` |
| Price | `price`, `currency`, `pricePeriod`, `pricePerM2`, `pricePerSot`, `priceFrom`, `priceTo` |
| Location | `address`, `neighborhood`, `locationType`, `city`, `cityId`, `locationId`, `nearbyAreas`, `nearestMetro`, `country`, `latitude`, `longitude` |
| Property | `propertyType`, `condition`, `categoryName`, `buildingType`, `rooms`, `bathrooms`, `balconies`, `renovation`, `areaBuilt`, `areaLand`, `areaLandSot`, `floor`, `totalFloors` |
| Legal and finance | `hasTitleDeed`, `acceptsMortgage`, `hasDeveloperFinancing`, `isRenovated` |
| Seller | `sellerType`, `isPrivateSeller`, `contactType`, `agencyId`, `agencyName`, `agencyUrl`, `agencyLogoUrl`, `agencyAddress`, `agencySchedule`, `agencyListingCount` |
| Ad status | `isFeatured`, `isPremium`, `views`, `updatedAt` |
| Media and text | `imageUrl`, `images`, `imageCount`, `description`, `videoUrl`, `logoUrl`, `coverImageUrl` |
| New-build complexes | `residenceId`, `residenceName`, `residenceUrl`, `developerName`, `completion`, `roomOptions`, `unitTypes`, `buildingCount`, `blockCount`, `apartmentCount`, `ceilingHeight`, `liftsPerBlock`, `floorsPerBuilding`, `apartmentsPerFloor`, `windowType`, `technology`, `facilities`, `specialOffers`, `listingCount`, `schedule`, `shortAddress`, `unitId` |
| Agencies | `agencyId`, `title`, `address`, `schedule`, `categories`, `listingCount`, `views`, `logoUrl`, `coverImageUrl`, `description` |
| Business contact (optional) | `website`, `email` |

Fill rates on 300 live ads checked on 2026-10-11 (sale, rent and daily rent, all property types): price, address, city, coordinates, photos, views, update time and the legal flags 100 percent, neighborhood 93 percent, area 92 percent, renovation flag 76 percent, rooms 67 percent (garages and land have none), floor and total floors 33 percent (only apartments have them), agency name 50 percent (the other half are private sellers). A missing value means the ad does not state it: the key is left out, never filled with a placeholder.

### 🧾 Bina.az listing example: what does a real result look like?

A real listing row (cloud run, 2026-10-11, title, photo list and description shortened or left out):

```json
{
  "imageUrl": "https://bina.azstatic.com/uploads/f460x345/2026%2F09%2F29%2F16%2F04%2F21%2F67863e98-e6da-4800-b4fb-4114da9ab2d3%2F94092_hP6opNonA0oFaSEXxETBBg.jpg",
  "recordType": "listing",
  "listingId": "6393074",
  "agencyId": "641",
  "url": "https://bina.az/items/6393074",
  "operation": "sale",
  "propertyType": "apartment",
  "condition": "new",
  "categoryName": "Yeni tikili",
  "price": 440000,
  "currency": "AZN",
  "pricePeriod": "once",
  "pricePerM2": 2588.24,
  "address": "Azadlıq pr.",
  "neighborhood": "28 May m.",
  "locationType": "metro",
  "city": "Bakı",
  "cityId": "1",
  "locationId": "8",
  "nearbyAreas": ["Nəsimi r.", "28 May m.", "Azərbaycan Dillər Universiteti "],
  "country": "AZ",
  "latitude": 40.38520817722154,
  "longitude": 49.84472709271243,
  "rooms": 3,
  "areaBuilt": 170,
  "floor": 13,
  "totalFloors": 16,
  "hasTitleDeed": true,
  "acceptsMortgage": true,
  "hasDeveloperFinancing": false,
  "isRenovated": true,
  "sellerType": "agency",
  "isPrivateSeller": false,
  "contactType": "agent",
  "agencyName": "New House Nizami",
  "agencyUrl": "https://bina.az/agentlikler/new-house-nizami",
  "agencyAddress": "Səbail r., Murtuza Muxtarov küç.",
  "agencySchedule": "Hər gün: 10:00-19:00",
  "agencyListingCount": 594,
  "isFeatured": false,
  "isPremium": false,
  "views": 599,
  "imageCount": 9,
  "images": ["https://bina.azstatic.com/uploads/full/2026%2F09%2F29%2F16%2F04%2F21%2F67863e98-e6da-4800-b4fb-4114da9ab2d3%2F94092_hP6opNonA0oFaSEXxETBBg.jpg"],
  "description": "QAÇIRILMAZ FÜRSƏT! 28 May metrosuna 3 dəq məsafədə möhtəşəm təmirli mənzil. Kupçası var, İpotekaya yararlı...",
  "updatedAt": "2026-10-11T08:04:24.000Z",
  "sourceSite": "bina.az",
  "scrapedAt": "2026-10-11T08:04:38.235Z"
}
```

Prices are plain numbers in Azerbaijani manat (AZN). Dates are ISO 8601 in UTC. Titles and descriptions are in Azerbaijani, as the sellers wrote them. `areaLand` is in square meters and `areaLandSot` in sot (1 sot is 100 square meters, the local land unit).

### 🚀 How to scrape Bina.az in 4 steps

1. Create a free account at [console.apify.com](https://console.apify.com) and open this Actor.
2. Pick what to collect (listings, agencies, new-build complexes or complex units), then the operation (sale, rent, daily rent or all), property types and filters. Leave everything empty to get the newest ads across the whole site.
3. Set **Max Items** and press Start. A 3-listing run with full details finishes in about 2 seconds.
4. Download the dataset as CSV, Excel, JSON or XML, or read it through the Apify API.

To read one ad, one agency or one complex, paste its bina.az URL in **Start URLs** or the ad id in **Listing IDs**. To reuse a search you built on bina.az, paste the search page URL: city, district, category, rooms, price, area and floor filters in the address are understood.

### 📈 Bina.az scraper vs alternatives

| | This Actor | sian.agency Bina.az Scraper | Manual browsing |
|---|---|---|---|
| Price per 1,000 ads with details | $48.00 ($20.00 list only) | $5.00 on paid plans, $20 on free tier | Free, your time |
| Record types | Ads, agencies, complexes, units | Ads only | One page at a time |
| Fields | 89 columns, coordinates, photos | 30+ fields | No export |
| New-ad alerts | Built-in only-new mode | Not stated, DIY workaround | None |

Rival prices read on 2026-10-11 from the live Store pages. The rival page shows no agency directory, no new-build complexes and no built-in incremental mode, and charges a $0.005 run start that this Actor does not. On price, this Actor is the more expensive option: the rival costs $5.00 per 1,000 ads on paid Apify plans and $20 on the free tier, while this Actor costs $20.00 per 1,000 ads for the search list (the same as the rival on the free tier) and $48.00 with full details. Choose the rival if you only need plain listing rows at the lowest price. Choose this one when you need agencies, new-build complexes, 89 columns with coordinates on every ad, full descriptions and photos, or scheduled new-ad runs. The other Azerbaijani portal on the Store, Tap.az, is a different site, not an alternative for bina.az data.

### 💲 How much does the Bina.az scraper cost?

Pay per event, no subscription. Live prices on 2026-10-11:

| Event | Price |
|---|---|
| Property listing (one ad row) | $0.02 |
| Full ad details (added when the full page is read) | $0.028 |
| Agency row | $0.024 |
| New-build complex | $0.048 |
| Complex unit type | $0.012 |

Worked examples:

- 1,000 ads with full details: 1,000 x ($0.02 + $0.028) = **$48.00**.
- 1,000 ads, search list only (details off): 1,000 x $0.02 = **$20.00**.
- The whole agency directory, 454 agencies: 454 x $0.024 = **$10.90**.
- All 72 new-build complexes (complex rows only): 72 x $0.048 = **$3.46**.
- A daily only-new alert that finds 50 new ads with details: 50 x $0.048 = **$2.40** per run.

### 💼 Bina.az scraper use cases

- **Real estate investors**: compare `pricePerM2` across districts and metro stations, new-build against resale, and export the shortlist with coordinates.
- **Agents and brokers**: watch new ads in a district with the only-new mode and send them to a CRM or spreadsheet.
- **Developers and builders**: read competitor complexes (completion date, price range, unit types, facilities, offers) and the price of every unit type.
- **Market researchers and analysts**: track asking prices and ad counts by city, category and operation over time with scheduled runs.
- **Agency analysis and lead research**: list agencies with address, opening hours, active ads and categories, and see which agencies hold the most stock in an area.
- **Proptech and portal builders**: feed an aggregator for the Caucasus market with a clean, typed schema.

### ⚙️ Bina.az scraper input

| Field | Type | Example |
|---|---|---|
| `recordTypes` | array | `["listings"]` (also agencies, complexes, units) |
| `operation` | string | `"rent"` (sale, rent, daily rent, all) |
| `cities` | array | `["Bakı"]` |
| `locations` | array | `["28 May m."]` |
| `rooms` | array | `["2"]` |
| `minPrice`, `maxPrice` | integer | `1500` (AZN) |
| `fetchDetails` | boolean | `true` |
| `onlyNew` | boolean | `true` for scheduled monitoring |
| `maxItems` | integer | `50` |

Example input:

```json
{
  "operation": "rent",
  "cities": ["Bakı"],
  "rooms": ["2"],
  "maxPrice": 1500,
  "maxItems": 50
}
```

### 🔌 Bina.az scraper API, MCP and integrations

Run it from any language through the Apify API:

```bash
curl -X POST "https://api.apify.com/v2/acts/RecordsData~bina-az-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"operation":"rent","cities":["Bakı"],"rooms":["2"],"maxPrice":1500,"maxItems":50}'
```

Connect it to Make, Zapier, n8n, Google Sheets or Slack with the standard Apify integrations, or let an AI agent call it through the Apify MCP server: `https://mcp.apify.com?tools=RecordsData/bina-az-scraper`.

### 🤖 Bina.az scraper for AI agents (MCP)

Add the Actor to any MCP client (Claude, Cursor, VS Code) through the Apify MCP server: `https://mcp.apify.com?tools=RecordsData/bina-az-scraper`. The agent sees the Actor input schema as the tool description: a tool that scrapes bina.az property ads, agencies and new-build complexes in Azerbaijan, with filters for operation, property type, city, district, rooms, price and area, and a `maxItems` cap.

Example agent prompt:

> Find the 20 cheapest 2-room apartments for rent in Baku under 1,500 AZN on bina.az, with coordinates and the agency name, and tell me the median price per square meter.

The agent calls the Actor with `{"operation":"rent","cities":["Bakı"],"rooms":["2"],"maxPrice":1500,"maxItems":20}`, reads the dataset rows (`price`, `pricePerM2`, `latitude`, `longitude`, `agencyName`) and answers from them. Keep `maxItems` small in agent runs to control cost.

### ⚖️ Is it legal to scrape Bina.az?

The Actor reads the public ads that bina.az shows to every visitor, without logging in and without a key, at a few requests per second. Private sellers' names and phone numbers are never output (the site masks the phones itself), and phone numbers or e-mail addresses typed into an ad description are masked in the output. Agency and new-build complex data is business information. Complex websites and e-mails are returned only if you turn on the contact option. This is not legal advice: check the site terms and the rules that apply to your use of the data.

### FAQ: Bina.az scraper questions and answers

**Does the Bina.az scraper need a proxy or a bina.az account?**
No. It calls the JSON service behind the website with plain requests, a few at a time with a short pause between them. It needs no login, no API key and no proxy, and cloud runs finished without a single blocked request, so the only cost is the per-event price listed above.

**How many listings does bina.az have?**
On 2026-10-11 the live catalog held about 110,800 ads: 79,800 for sale, 29,762 monthly rentals and 1,217 daily rentals, in 71 cities, with 454 agencies and 72 new-build complexes. The number moves every day as sellers add and remove ads, so schedule the Actor to follow it and set Max Items to the size you need.

**Can I get old or expired listings?**
No. bina.az removes ads after roughly 50 days and the site does not serve them any more, so the Actor returns the live catalog only, with the last update time on every ad. To keep a history, schedule a run every day or week and store the datasets.

**How do I filter by district or metro station?**
Type the place in **Districts, metro stations and places**, for example `Elmlər Akademiyası m.` or `Nəsimi r.`. Accents and capitals do not matter. You can also paste a bina.az search URL that already has the place in its address. Cities work the same way in **Cities**: each city is scanned in turn, so a multi-city run mixes them.

**What currency are the prices in, and what is a sot?**
Every price on bina.az is in Azerbaijani manat (AZN). Land is sold by the sot, which is 100 square meters: `areaLandSot` shows it, `areaLand` shows square meters and `pricePerSot` the price of one sot. The land area filters work in sot, and the area filters in square meters are converted for land plots. For monthly and daily rentals, `pricePeriod` says `month` or `day`.

**Does it return phone numbers?**
No. The website itself masks phone numbers, and the Actor never collects private sellers' names. You get the seller type, the contact type (owner or agent), the agency name and page, and the ad URL where the contact button lives. Agency pages have an address and opening hours, which are in the agency rows.

**What are the new-build complex and unit rows?**
bina.az lists 72 new-build residential complexes. A complex row has the developer, completion date, price range, room options, facilities, special offers (such as installment plans) and building facts. A unit row is one apartment type inside a complex with its rooms, area, bathrooms, balconies, renovation and price. The price of a unit is the complex rate per square meter times the area.

**Why are some fields empty on a listing?**
Because the ad does not state them. Garages and land have no rooms or floor, and only some ads fill the renovation, title deed or mortgage boxes. Keep Fetch full ad details on (the default): the search list alone has no description, photos, coordinates or seller business.

**How do I get only the new bina.az ads every day?**
Turn on Only new rows and schedule the Actor. It remembers the ads it already returned for the same search in a store of your own account and skips them, so each run returns just the new ads. Use Reset seen list to start over.

**How do I get help or ask for a missing field?**
Write to contact.punkrecordsdata@gmail.com with the search you ran and the field you need. Bug reports with a run link are the fastest to fix. Replies come by e-mail, and requests for new filters or columns are read by the people who maintain the Actor.

Last updated: 2026-10-11

# Actor input Schema

## `startUrls` (type: `array`):

Optional bina.az pages to read: an ad (bina.az/items/6440600), an agency page (bina.az/agentlikler/ideal-emlak), a new-build complex page (bina.az/yasayis-kompleksleri/park-academy-living) or any search page such as bina.az/alqi-satqi/menziller/yeni-tikili/3-otaqli or bina.az/baki?price_from=100000. A search page brings its own filters, so the filters below are ignored for it. Leave empty to search with the filters below.

## `listingIds` (type: `array`):

Optional list of ad ids (the number in the ad URL, for example 6440600) or full ad URLs. These ads are fetched directly with their full detail and the search filters are not applied to them. An id that is gone or expired returns one free error row.

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `recordTypes` (type: `array`):

What to return. Listings: one row per ad (price, area, rooms, floor, place, seller type, legal flags, photos). Agencies: one row per real estate agency (address, schedule, coordinates, ad count). Residences: one row per new-build residential complex (developer, deadline, price range, building facts, facilities, offers). Residence units: one row per apartment type offered inside a complex (rooms, area, price, bathrooms). Every row counts toward Max Items; rows come in the order listed here.

## `fetchDetails` (type: `boolean`):

Open every ad for the full description, street address, coordinates, all photos, views, contact type (owner or agent) and the agency or developer behind it. Billed as the listing-detail event on top of the listing. Turn off for a cheaper list-only pass (no description, address, coordinates, agency name or photo gallery).

## `operation` (type: `string`):

Sale, monthly rent, daily rent, or all of them. Every row says which one it is in the operation field.

## `propertyTypes` (type: `array`):

Only these property types. Leave empty for all seven. Apartments are split the way the site splits them: new-build and resale.

## `cities` (type: `array`):

Only ads in these cities, for example Bakı, Sumqayıt, Gəncə or Xırdalan. Accents and capitals do not matter (Baki works). Add one city per line; each city is scanned in turn.

## `locations` (type: `array`):

Only ads in these places inside the chosen cities: districts (Nərimanov r.), metro stations (Gənclik m.) or settlements (Biləcəri q.). Write the name as on bina.az, its slug (baki/nesimi) or its numeric id. A name that exists twice matches both.

## `rooms` (type: `array`):

Only ads with exactly these room counts (bina.az counts all rooms, living room included). Leave empty for any.

## `minPrice` (type: `integer`):

Only ads priced at least this much, in Azerbaijani manat. For rent it is the monthly (or daily) rent. 0 means no minimum.

## `maxPrice` (type: `integer`):

Only ads priced at most this much, in Azerbaijani manat. 0 means no maximum.

## `minArea` (type: `integer`):

Only ads with at least this living or built area in square meters. For land plots the limit applies to the plot size, rounded to whole sot (1 sot = 100 m2). 0 means no minimum.

## `maxArea` (type: `integer`):

Only ads with at most this living or built area in square meters. For land plots the limit applies to the plot size, rounded to whole sot (1 sot = 100 m2). 0 means no maximum.

## `minLandArea` (type: `integer`):

Only ads with at least this much land, in sot (1 sot = 100 m2). For houses it is the plot around the house, for land plots the plot itself. 0 means no minimum.

## `maxLandArea` (type: `integer`):

Only ads with at most this much land, in sot (1 sot = 100 m2). For houses it is the plot around the house, for land plots the plot itself. 0 means no maximum.

## `minFloor` (type: `integer`):

Only apartments on this floor or higher. 0 means no minimum.

## `maxFloor` (type: `integer`):

Only apartments on this floor or lower. 0 means no maximum.

## `floorPosition` (type: `string`):

Keep or drop the ground and top floors of the building.

## `buildingType` (type: `string`):

Apartment building, villa, or business center (offices). Any keeps all.

## `listingTier` (type: `string`):

Keep only the ads the seller paid to promote: featured (highlighted) or premium (VIP, pinned to the top).

## `onlyTitleDeed` (type: `boolean`):

Keep only ads that state a registered title deed (the site's kupça filter).

## `onlyMortgage` (type: `boolean`):

Keep only ads where the seller says a bank mortgage is possible.

## `onlyDeveloperFinancing` (type: `boolean`):

Keep only ads that offer an internal loan or installment plan from the developer.

## `onlyRenovated` (type: `boolean`):

Keep only ads marked as renovated (təmirli).

## `onlyNewBuildComplexes` (type: `boolean`):

Keep only ads that belong to a registered new-build residential complex.

## `agencies` (type: `array`):

Only ads from these agencies, matched by name as on bina.az/agentlikler (part of the name is enough, accents and capitals do not matter; up to 5 agencies per name). With Record types set to Agencies, returns these agency pages instead.

## `updatedSince` (type: `string`):

Only ads updated or renewed on or after this date, for example 2026-10-10 or 2026-10-10T08:00:00+04:00 (Baku time is UTC+4). Leave empty for no cutoff. With the newest-first sort the scan stops early once the ads are older.

## `sortBy` (type: `string`):

Order of the ads inside every search. Newest first means last updated or renewed first.

## `maxRunSeconds` (type: `integer`):

Stop collecting after this many seconds and return what was gathered, so a very wide search never runs unbounded.

## `onlyNew` (type: `boolean`):

Only new rows: skip every ad, agency, complex or unit type this same search already returned in an earlier run, so a scheduled run returns just the new ones and you are not charged for skipped rows. Max Items then means N new rows. Off by default.

## `stateKey` (type: `string`):

Name of this monitor. Leave empty to derive it from your filters. Use a name to run two monitors with the same filters.

## `resetSeen` (type: `boolean`):

Clear the saved list for this monitor before the run, so everything counts as new again.

## `includeContactDetails` (type: `boolean`):

Keep business contact data that sellers wrote in public text: the developer website and e-mail of a new-build complex, and phone numbers or e-mails inside the description of ads from agencies and developers and inside agency descriptions. Private sellers' phones and e-mails are always removed. Off by default.

## Actor input object example

```json
{
  "startUrls": [],
  "listingIds": [],
  "maxItems": 10,
  "recordTypes": [
    "listings"
  ],
  "fetchDetails": true,
  "operation": "sale",
  "propertyTypes": [],
  "cities": [],
  "locations": [],
  "rooms": [],
  "minPrice": 0,
  "maxPrice": 0,
  "minArea": 0,
  "maxArea": 0,
  "minLandArea": 0,
  "maxLandArea": 0,
  "minFloor": 0,
  "maxFloor": 0,
  "floorPosition": "any",
  "buildingType": "any",
  "listingTier": "any",
  "onlyTitleDeed": false,
  "onlyMortgage": false,
  "onlyDeveloperFinancing": false,
  "onlyRenovated": false,
  "onlyNewBuildComplexes": false,
  "agencies": [],
  "updatedSince": "",
  "sortBy": "newest",
  "maxRunSeconds": 1800,
  "onlyNew": false,
  "stateKey": "",
  "resetSeen": false,
  "includeContactDetails": false
}
```

# Actor output Schema

## `overview` (type: `string`):

Key fields per row

## `fullData` (type: `string`):

Complete dataset with all fields

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [],
    "listingIds": [],
    "maxItems": 10,
    "recordTypes": [
        "listings"
    ],
    "operation": "sale",
    "cities": [],
    "locations": [],
    "floorPosition": "any",
    "buildingType": "any",
    "listingTier": "any",
    "agencies": [],
    "sortBy": "newest"
};

// Run the Actor and wait for it to finish
const run = await client.actor("recordsdata/bina-az-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [],
    "listingIds": [],
    "maxItems": 10,
    "recordTypes": ["listings"],
    "operation": "sale",
    "cities": [],
    "locations": [],
    "floorPosition": "any",
    "buildingType": "any",
    "listingTier": "any",
    "agencies": [],
    "sortBy": "newest",
}

# Run the Actor and wait for it to finish
run = client.actor("recordsdata/bina-az-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [],
  "listingIds": [],
  "maxItems": 10,
  "recordTypes": [
    "listings"
  ],
  "operation": "sale",
  "cities": [],
  "locations": [],
  "floorPosition": "any",
  "buildingType": "any",
  "listingTier": "any",
  "agencies": [],
  "sortBy": "newest"
}' |
apify call recordsdata/bina-az-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,recordsdata/bina-az-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/PLA5Dsv9R4ylpwGq6/builds/frzOIwqAkzXAdyL1r/openapi.json
