# Bina.az Scraper - Azerbaijan Property Listings (`sian.agency/bina-property-scraper`) Actor

Pull bina.az listings: price in AZN, area, rooms, floor, address, photos and seller. Baku, Sumqayit, Ganja and all Azerbaijan. JSON or CSV.

- **URL**: https://apify.com/sian.agency/bina-property-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Real estate, Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.76 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Bina.az Scraper - Azerbaijan Property Listings & Prices 🚀

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![MyHome.ge Scraper](https://img.shields.io/badge/Store-MyHome.ge%20Scraper-1AE392)](https://apify.com/sian.agency/myhome-ge-property-scraper?fpr=sian) [![Kufar Scraper](https://img.shields.io/badge/Store-Kufar%20Scraper-E8452C)](https://apify.com/sian.agency/kufar-property-scraper?fpr=sian) [![Cian Scraper](https://img.shields.io/badge/Store-Cian%20Scraper-0468FF)](https://apify.com/sian.agency/cian-property-scraper?fpr=sian)

#### 🎉 78,000 live sale adverts from Azerbaijan's main property board, as a table

##### For analysts, agencies and investors who need Baku, Sumqayit and Ganja as rows, not browser tabs

### 🔎 What is the Bina.az Azerbaijan Property Scraper — and when should you use it?

The **Bina.az Azerbaijan Property Scraper** turns public bina.az property adverts from anywhere in Azerbaijan into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

**Use it when you need:** Azerbaijani sale, monthly-rent and daily-rent adverts as rows. Asking price comes back in manat, with floor area, rooms, floor and floors in the building. Location is the city plus the district bina.az indexes. The seller block says whether an agency, a residential complex or a private owner placed the advert. Switch on full details and each row also carries the seller's complete advert text, every photo, the view count and the street address.

**Use something else when:** the property is not in Azerbaijan. Use [MyHome.ge Scraper](https://apify.com/sian.agency/myhome-ge-property-scraper?fpr=sian) for Georgia's leading property portal, with the same sale-and-rent row shape. Use [Kufar Scraper](https://apify.com/sian.agency/kufar-property-scraper?fpr=sian) for Belarusian sale and rental stock from Kufar. Use [Cian Scraper](https://apify.com/sian.agency/cian-property-scraper?fpr=sian) for Russia's leading property portal. This actor covers what bina.az publishes: apartments (new-build and Soviet-era), houses, offices, garages, land plots and commercial premises, each for sale, for monthly rent or for daily rent, across 71 cities. Seller phone numbers sit behind bina.az click-to-call and are never read. The site publishes only what is currently advertised, so there is no sold-price history.

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/bina-property-scraper

**Your agent can pay for its own runs.** This Actor is eligible for [agentic payments](https://docs.apify.com/platform/actors/publishing/monetize), so an agent can discover it, run it and settle the bill over [x402](https://www.x402.org/) (USDC on Base) or [Skyfire](https://www.skyfire.xyz/) — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

```text
I want property listings and asking prices from bina.az using the Apify Actor `sian.agency/bina-property-scraper`.

Use it when I need: Azerbaijani sale, monthly-rent and daily-rent adverts as rows. Asking price comes back in manat, with floor area, rooms, floor and floors in the building. Location is the city plus the district bina.az indexes. The seller block says whether an agency, a residential complex or a private owner placed the advert. Switch on full details and each row also carries the seller's complete advert text, every photo, the view count and the street address.

Don't use it when: the property is not in Azerbaijan — use myhome-ge-property-scraper or kufar-property-scraper or cian-property-scraper instead.

How to call it: set `dealType` to `sale`, `rent` or `daily-rent`, and `propertyCategory` to one of `apartments`, `new-build`, `old-build`, `houses`, `offices`, `garages`, `land` or `commercial`. Pick a `city` from the 71 bina.az indexes, or `any` for all of Azerbaijan. A form search with no city is refused before anything is fetched. Leave `propertyCategory` empty to read every section. Narrow with `rooms`, `minPrice`/`maxPrice` in AZN, `minArea`/`maxArea`, `hasRepair`, `hasBillOfSale` (kupcha) and `hasMortgage`. `includeDetails` opens each advert for the seller text, photos, views and street address, for an extra charge per advert. To expand adverts you already have, set `operation` to `detail` and pass `listingUrls`. To reuse a search you built on the site, paste the address bar into `searchUrls`.

Start with this input:
{
  "operation": "search",
  "dealType": "sale",
  "propertyCategory": "apartments",
  "city": "baki",
  "maxResults": 50
}

Ask me which Azerbaijani city to cover, whether they want sale or rental adverts, and whether the full seller text and photos are worth the extra per-advert charge, then run the Actor and summarise the results as a table.
```

**Things you can ask your agent for:**

- *Pull two-room flats for sale in Baku under 200000 AZN and rank the districts by median price per square metre.*
- *Find renovated rentals in Sumqayit with a kupcha, newest first.*
- *List the agencies advertising new-build apartments in Nasimi, sorted by how much stock each one holds.*

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at [apify.com/sian.agency/bina-property-scraper.md](https://apify.com/sian.agency/bina-property-scraper.md).

### 📋 Overview

**bina.az is the board Azerbaijani buyers actually use.** About 78,000 sale adverts sit there today, plus monthly and daily rents, across 71 cities. This Actor turns those adverts into rows: price in manat, area, rooms, floor, district, seller type and the flags that matter locally (kupcha, ipoteka, təmir).

**Why thousands of professionals choose us:**

- ✅ **71 cities, not a Baku dump**: Sumqayit, Ganja, Khirdalan and Nakhchivan are first-class picks
- ⚡ **25 adverts per request**, newest, cheapest or largest first
- 🎯 **Typed columns**: rooms, floor, area, kupcha, mortgage-eligible, renovated
- 💰 **$2.00 per 1,000 listing rows** plus a $0.005 run start
- 💎 **Agency vs owner split** on every row, with the company name on agency adverts
- ✨ **NEW**: paste a bina.az search address and the deal type, category, city and filters in it are used

### ✨ Features

- 🏠 **Eight property sections**: all apartments, new-build, Soviet-era, houses, offices, garages, land, commercial
- 🤝 **Sale, monthly rent and daily rent**, each row labelled
- 📍 **71 cities** picked from bina.az's own city list
- 🛏️ **Room filter** as a multi-select; 5 means five or more
- 📜 **Kupcha, ipoteka and təmir** as real filters, not keywords
- 🖼️ **Cover photo on every row**, the full gallery when you open the advert
- 🔗 **Paste a search** you built on bina.az
- 📄 **Full seller text on demand**: one switch opens each advert for description, photos, views and street address

### 🎬 Quick Start

Pick a city, pick sale or rent, press Start. The form opens on Baku apartments for sale, newest first. Results land in a dataset you can download as JSON, CSV or Excel.

```bash
curl -X POST https://api.apify.com/v2/acts/sian.agency~bina-property-scraper/runs?token=YOUR_TOKEN \
-d '{"operation":"search","dealType":"sale","propertyCategory":"apartments","city":"baki","maxResults":50}'
```

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Choose the section

Pick sale, monthly rent or daily rent, then a property category.

#### Step 2: Choose where

Pick a city from the list, or leave it on Baku. All 71 cities bina.az indexes are there.

#### Step 3: Press Start

Raise Max listings if you want more than the first 50, then export the dataset.

**That's it! In about a minute, you'll have:**

- Asking prices in AZN, with area, rooms and floor
- District names as bina.az prints them
- A dataset ready for Excel, BigQuery, a notebook or an AI agent

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `operation` | string | No | `search` sweeps a category; `detail` opens specific adverts |
| `dealType` | string | No | `sale`, `rent` or `daily-rent` |
| `propertyCategory` | string | No | apartments, new-build, old-build, houses, offices, garages, land, commercial. Empty reads every section |
| `city` | string | For a form search | One of 71 cities, or `any` for all of Azerbaijan. No default: an API call must name one |
| `maxResults` | integer | No | Stop after this many adverts |
| `rooms` | array | No | Room counts to keep; 5 means five or more |
| `minPrice` / `maxPrice` | integer | No | Price band in AZN; 0 means no bound |
| `minArea` / `maxArea` | integer | No | Floor area in square metres |
| `hasRepair` | boolean | No | Only renovated (təmirli) adverts |
| `hasBillOfSale` | boolean | No | Only adverts with a kupcha (çıxarış) |
| `hasMortgage` | boolean | No | Only mortgage-eligible (ipoteka) adverts |
| `sort` | string | No | newest, cheapest, most-expensive, smallest, largest |
| `includeDetails` | boolean | No | Open each advert for seller text, photos, views and street address |
| `searchUrls` | array | No | Paste bina.az search addresses instead of using the form |
| `listingUrls` | array | No | Full advert addresses for the `detail` operation |

**Example:**

```json
{
  "listingId": "6483817",
  "propertyTitle": "Satılır · 4 otaqlı · 95 m² · Sumqayıt",
  "url": "https://bina.az/items/6483817",
  "price": 132000,
  "priceCurrency": "AZN",
  "pricePerSqm": 1389,
  "dealType": "sale",
  "propertyCategory": "old-build",
  "rooms": 4,
  "area": 95,
  "floor": 2,
  "totalFloors": 5,
  "hasBillOfSale": true,
  "hasMortgage": false,
  "hasRepair": true,
  "city": "Sumqayıt",
  "address": "Sumqayıt şəhəri",
  "sellerName": "Rövşən",
  "sellerType": "agency",
  "agencyName": "Prime Əmlak",
  "agencyUrl": "https://bina.az/agentlikler/prime-emlak",
  "imageUrl": "https://bina.azstatic.com/uploads/full/2026%2F09%2F23%2F09%2F50%2F52%2F5e915cf9-2661-4126-9cce-7b23b17005f4%2F55595_uxLM_5oyRrFxCuOfvaoJ0g.jpg",
  "imageCount": 17,
  "views": 18,
  "listedAt": "2026-09-23T09:51:53+04:00",
  "status": "success"
}
```

**Bulk listing expansion:**

```json
{
  "operation": "detail",
  "listingUrls": [
    { "url": "https://bina.az/items/6440130" },
    { "url": "5639851" }
  ]
}
```

### 📤 Output

Results are saved to the Apify dataset with **30+ fields** including:

| Field | Type | Description |
|-------|------|-------------|
| `listingId` | string | bina.az advert ID |
| `propertyTitle` | string | Built from deal type, rooms, area and district |
| `url` | string | Link back to the advert |
| `price` | number | Asking price or rent, in AZN |
| `priceCurrency` | string | Always AZN |
| `pricePerSqm` | number | Price divided by floor area |
| `rooms` / `area` / `floor` / `totalFloors` | number | Size and floor facts |
| `hasBillOfSale` / `hasMortgage` / `hasRepair` | boolean | Kupcha, ipoteka, renovated |
| `city` / `district` / `address` | string | Where it is. Address arrives on a detail row |
| `sellerName` / `sellerType` | string | Contact name, and `agency`, `developer` or `owner` |
| `agencyName` / `agencyUrl` | string | Agency brand and its bina.az page, on detail rows |
| `imageUrl` / `imageUrls` / `imageCount` | string, array, number | Cover photo on every row; gallery and count on detail rows |
| `descriptionText` / `views` | string, number | Seller text and view count on detail rows |
| `listedAt` | string | When the advert was last bumped |

**Example:**

```json
{
  "listingId": "6440130",
  "propertyTitle": "Satılır · 3 otaqlı · 104 m² · Nəsimi r.",
  "url": "https://bina.az/items/6440130",
  "price": 365000,
  "priceCurrency": "AZN",
  "pricePerSqm": 3510,
  "dealType": "sale",
  "rooms": 3,
  "area": 104,
  "floor": 2,
  "totalFloors": 19,
  "hasBillOfSale": true,
  "hasMortgage": true,
  "hasRepair": true,
  "city": "Bakı",
  "district": "Nəsimi r.",
  "address": "Nəsibbəy Yusifbəyli küçəsi",
  "sellerName": "Mətanət",
  "sellerType": "agency",
  "imageCount": 1,
  "views": 155,
  "listedAt": "2026-09-18T11:33:40+04:00",
  "status": "success"
}
```

### 💼 Use Cases & Examples

#### 1. Baku apartment market study

**Analysts who need Yasamal against Nasimi as a comparable table.**

**Input:** Baku, apartments, optional room and price band.
**Output:** asking price, area, rooms, floor, district, new-build vs Soviet-era.
**Use:** price per square metre by district, split by new towers and older stock.

#### 2. Agency lead list

**Proptech and CRM vendors selling into Azerbaijani agencies.**

**Input:** a district, then group the dataset by agency name.
**Output:** company name on every agency advert.
**Use:** see who holds the stock in a neighbourhood before you approach any of them.

#### 3. Private-owner sourcing

**Acquisition desks who want the half of the market no agency has signed.**

**Input:** a search, then keep rows whose seller type is owner. Open details for the street address.
**Output:** the seller name, the district, the street on a detail row.
**Use:** an approach list that has not already been worked by three agencies.

#### 4. New listing watch

**Aggregators keeping a live mirror of Azerbaijani supply.**

**Input:** a saved search sorted newest first, on a schedule.
**Output:** everything bumped since your last run.
**Use:** keep the advert IDs you have seen, and pay only for what is new.

#### 5. Rental yield screen

**Investors comparing neighbourhoods before they buy.**

**Input:** two runs over the same Baku districts, one sale and one rent.
**Output:** rooms, area and price on both sides.
**Use:** a gross-yield picture per neighbourhood that no single bina.az page shows.

#### 6. New-build vs Soviet-era split

**Valuers who need the two apartment stocks kept apart.**

**Input:** `new-build` in one run, `old-build` in another, same city.
**Output:** the same columns, two datasets.
**Use:** a two-room flat in a 1980s block against the same thing in a new tower.

#### 7. Full-country extract

**Data teams building a repeatable Azerbaijani market index.**

**Input:** one category, city set to all of Azerbaijan, a high row budget.
**Output:** the entire category in one dated dataset.
**Use:** the sale corpus is about 78,000 live adverts; a national snapshot is a normal run.

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/bina-property-scraper').call({
  operation: 'search',
  dealType: 'sale',
  propertyCategory: 'apartments',
  city: 'baki',
  maxResults: 200,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/bina-property-scraper').call(
    run_input={
        'operation': 'search',
        'dealType': 'rent',
        'propertyCategory': 'apartments',
        'city': 'baki',
        'maxResults': 200,
    }
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item['price'], item['city'], item['area'])
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~bina-property-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation":"search","propertyCategory":"houses","dealType":"sale","city":"gence","maxResults":100}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule, daily or weekly
2. **HTTP Request**: Call the Actor API with your saved search
3. **Process**: Drop advert IDs you have already stored
4. **Action**: Append the new rows to a sheet, a database or a Slack alert

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **25 adverts** per run — every field, every filter, same data
- No credit card required
- Enough to check the fields against your own model before you commit

#### PAID Tier (Production Ready)

- **Unlimited** adverts per run, up to 50,000 in a single sweep
- 25 adverts per request
- Pay-per-result: charged per advert returned, never for a search that matched nothing

💰 **$2.00 per 1,000 listing rows** plus a $0.005 run start. Opening an advert for the seller text and photos is $3.00 per 1,000.

🔗 [View current pricing](https://apify.com/sian.agency/bina-property-scraper?fpr=sian)

### ❓ Frequently Asked Questions

**Q: How many adverts can one search return?**
A: As many as match, up to your max. Each request returns up to 25. The sale corpus is about 78,000 live adverts.

**Q: Do I need an API key, a login or a proxy?**
A: No. Pick a city and press Start.

**Q: Which currency are the prices in?**
A: Azerbaijani manat (AZN), which is how bina.az quotes them.

**Q: What do the full details add?**
A: The complete seller description, every photo, the view count and the street address. Search rows do not carry those.

**Q: Can I get seller phone numbers?**
A: No. bina.az reveals a phone number only behind its own click-to-call, and this actor does not touch it.

**Q: Can I paste a bina.az search address?**
A: Yes. Build the search on bina.az, copy the address bar into Search URLs, and the deal type, category, city and filters in it are used.

**Q: Does it cover the whole of Azerbaijan?**
A: Yes — all 71 cities bina.az lists, and every property category for sale, monthly rent and daily rent.

**Q: How long does a run take?**
A: A 50-row Baku sweep finishes in under a minute. A few thousand rows take a few minutes.

### 🐛 Troubleshooting

**The run returned zero rows**

- Check the city, category and deal type. Land plots are sale-only, so a rent run against land returns nothing.
- Widen the price or room filter. A 5-room band in a small town can be empty.

**The run failed with "Pick a City"**

- A form search needs a city. Set `city` to a city such as `baki`, or to `any` for the whole country.
- Or paste a bina.az search address into `searchUrls`, or advert addresses into `listingUrls`.
- A run stopped this way costs only the start fee.

**A pasted advert address was rejected**

- Use the full advert address, such as `https://bina.az/items/6440130`. A bare number is refused before the run starts.
- Search addresses go in Search URLs, not Listing URLs.

**Only one photo per row**

- Search rows carry the cover photo only. For the whole gallery, turn on Add full details or run Property Detail on the adverts you already have.

**An advert looks withdrawn**

- bina.az publishes what is currently advertised. Sold and taken-down adverts disappear. Re-run the search.

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

bina.az, Bina and Digital Classifieds MMC are trademarks of their respective owners. This actor is not affiliated with, endorsed by, or sponsored by bina.az or Digital Classifieds MMC.

### 🤝 Support

**Join our active support community**

- For issues or questions, open an issue in the actor's repository
- Check [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Changelog

This Actor's version history is a separate document: https://apify.com/sian.agency/bina-property-scraper/changelog.md

# Actor input Schema

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

Pick one per run. Property Search returns listing rows for any Azerbaijani city, deal type and property category, 25 adverts per request. Property Detail takes bina.az advert addresses and opens each one for the seller text, every photo, the view count and the street address.

## `dealType` (type: `string`):

Sale adverts carry an asking price in AZN. Monthly rent adverts carry a monthly rent. Daily rent is the short-stay section. Land plots are sale-only, so a rent run against land returns nothing rather than an error.

## `propertyCategory` (type: `string`):

Which bina.az property section to read. Apartments is the largest. New-build and Soviet-era split the apartment section. Land is sale-only. Leave it empty to read every section.

## `city` (type: `string`):

One of the 71 cities bina.az indexes, or all of Azerbaijan. Baku holds most of the stock. Needed for a form search; leave it empty only when you paste search or advert addresses.

## `maxResults` (type: `integer`):

Stop after this many listings. One call returns up to 25, so a 50-listing run is two requests.

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

Keep only adverts with these room counts. 5 means five or more. Leave empty for every size. Applies to apartments and houses.

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

Lowest asking price or monthly rent in AZN. 0 means no lower bound.

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

Highest asking price or monthly rent in AZN. 0 means no upper bound.

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

Minimum floor area in square metres. 0 means no minimum.

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

Maximum floor area in square metres. 0 means no maximum.

## `hasRepair` (type: `boolean`):

Keep only adverts the seller marked as renovated (təmirli).

## `hasBillOfSale` (type: `boolean`):

Keep only adverts that carry a kupcha (çıxarış), the Azerbaijani extract of title.

## `hasMortgage` (type: `boolean`):

Keep only adverts the seller marked as eligible for a bank mortgage (ipoteka).

## `sort` (type: `string`):

Newest first is what you want on a schedule when you only care about what appeared since the last run.

## `includeDetails` (type: `boolean`):

Open each advert for the complete seller description, every photo, the view count and the street address. Search rows do not carry those. Costs one Property Detail event per enriched listing on top of the listing row.

## `searchUrls` (type: `array`):

Paste bina.az search addresses instead of filling the fields above. Build the search on the site, copy the address bar, and the deal type, category, city and filters in it are read off the URL.

## `listingUrls` (type: `array`):

Used by Property Detail: bina.az advert addresses to expand, e.g. https://bina.az/items/6440130. Use the full address; a bare number is refused.

## Actor input object example

```json
{
  "operation": "search",
  "dealType": "sale",
  "propertyCategory": "apartments",
  "city": "baki",
  "maxResults": 50,
  "rooms": [],
  "minPrice": 0,
  "maxPrice": 0,
  "minArea": 0,
  "maxArea": 0,
  "hasRepair": false,
  "hasBillOfSale": false,
  "hasMortgage": false,
  "sort": "newest",
  "includeDetails": false,
  "searchUrls": [],
  "listingUrls": []
}
```

# Actor output Schema

## `binaAzListings` (type: `string`):

Every listing this run returned.

## `scrapingSummary` (type: `string`):

HTML summary showing successful and failed results with key metrics

# 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 = {
    "operation": "search",
    "dealType": "sale",
    "propertyCategory": "apartments",
    "city": "baki",
    "maxResults": 50,
    "rooms": [],
    "minPrice": 0,
    "maxPrice": 0,
    "minArea": 0,
    "maxArea": 0,
    "hasRepair": false,
    "hasBillOfSale": false,
    "hasMortgage": false,
    "sort": "newest",
    "includeDetails": false,
    "searchUrls": [],
    "listingUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/bina-property-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 = {
    "operation": "search",
    "dealType": "sale",
    "propertyCategory": "apartments",
    "city": "baki",
    "maxResults": 50,
    "rooms": [],
    "minPrice": 0,
    "maxPrice": 0,
    "minArea": 0,
    "maxArea": 0,
    "hasRepair": False,
    "hasBillOfSale": False,
    "hasMortgage": False,
    "sort": "newest",
    "includeDetails": False,
    "searchUrls": [],
    "listingUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/bina-property-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 '{
  "operation": "search",
  "dealType": "sale",
  "propertyCategory": "apartments",
  "city": "baki",
  "maxResults": 50,
  "rooms": [],
  "minPrice": 0,
  "maxPrice": 0,
  "minArea": 0,
  "maxArea": 0,
  "hasRepair": false,
  "hasBillOfSale": false,
  "hasMortgage": false,
  "sort": "newest",
  "includeDetails": false,
  "searchUrls": [],
  "listingUrls": []
}' |
apify call sian.agency/bina-property-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sian.agency/bina-property-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/b5P0KCOMkZNtMcxco/builds/ZRTnl2kVvyQ6xNskT/openapi.json
