# Arabam Vehicle Scraper (`shahidirfan/arabam-vehicle-scraper`) Actor

Extract vehicle listings from Arabam.com with car prices, brands, models, mileage, year, fuel type, transmission, location, images, and seller details. Ideal for Turkey's used car market research, price tracking, competitor analysis, automotive trends, and vehicle datasets.

- **URL**: https://apify.com/shahidirfan/arabam-vehicle-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

### What does Arabam.com Vehicle Scraper do?

Arabam.com Vehicle Scraper collects used vehicle listings from Arabam.com, Turkey's largest used car marketplace. Start with one Arabam search, category, or listing URL, or enter a keyword and location. The Actor returns structured vehicle records with price, year, mileage, fuel, transmission, body style, engine size, colour, seller details, location, and photo URLs.

Use it for Turkish used car price research, inventory tracking, dealer monitoring, and dataset building. Results are saved to an Apify dataset that you can download as JSON, CSV, Excel, or XML, or connect to another workflow through the Apify API.

### Why use Arabam.com Vehicle Scraper?

- **Consistent vehicle records** - Get one row per listing with the same field names across runs, so price comparisons and inventory reports are easier to build.
- **Search or browse** - Use a saved Arabam URL with its filters, or build a search from a keyword and a Turkish city.
- **Full listing details** - Open each vehicle page to collect specifications, seller information, location, and the complete photo set.
- **Controlled runs** - Set the number of records and the maximum number of result pages, so a test run stays small and a scheduled run stays predictable.
- **Export and integration options** - Download the dataset or send it to Google Sheets, webhooks, Make, Zapier, or your own application through the Apify API.

### What data can you extract from Arabam.com?

| Field          | Type   | Description                                       |
| -------------- | ------ | ------------------------------------------------- |
| `listingId`    | String | Arabam listing number                             |
| `title`        | String | Listing title                                     |
| `url`          | String | Direct listing URL                                |
| `make`         | String | Vehicle manufacturer                              |
| `model`        | String | Vehicle model                                     |
| `variant`      | String | Trim, package, or version                         |
| `year`         | Number | Model year                                        |
| `mileage`      | Number | Mileage in kilometres                             |
| `drivetrain`   | String | Drivetrain when published                         |
| `fuelType`     | String | Fuel type                                         |
| `transmission` | String | Gearbox type                                      |
| `bodyType`     | String | Body style                                        |
| `engineSize`   | Number | Engine displacement in cubic centimetres          |
| `horsePower`   | Number | Engine power when published                       |
| `color`        | String | Exterior colour                                   |
| `price`        | Number | Advertised price                                  |
| `currency`     | String | Currency code, normally `TRY`                     |
| `city`         | String | City or region                                    |
| `district`     | String | District or neighbourhood when published          |
| `sellerType`   | String | Seller category, such as `galeri` or `sahibinden` |
| `sellerName`   | String | Seller or dealer name                             |
| `imageUrls`    | Array  | Vehicle photo URLs                                |
| `scrapedAt`    | String | Collection time in ISO format                     |
| `sourceUrl`    | String | URL used to define the collection scope           |

Fields that Arabam does not publish for a listing are left out of that record. Each vehicle page is opened by default to collect the specification and seller fields. Turn off `enrich_details` when you only need the search-page fields and want a faster run.

### How to use Arabam.com Vehicle Scraper

1. Open the Actor on Apify Store.
2. Add an Arabam.com URL, or leave the URL field alone and enter a keyword, a location, or both.
3. Set `results_wanted` and `max_pages`.
4. Keep the Turkish residential proxy setting. Arabam serves a security check to exit IPs outside Turkey.
5. Run the Actor and check the dataset preview.
6. Export the dataset or connect it to your workflow.

When you enter a keyword or location, the Actor treats it as the search scope. A search URL you supply becomes the base for that search. A listing URL is ignored in this mode, so use one mode at a time. Leave keyword and location empty to browse the URL exactly as provided.

### Input Parameters

| Parameter            | Type    | Required | Default                                  | Description                                                                                      |
| -------------------- | ------- | -------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------ |
| `url`                | String  | No       | Arabam automobile category               | One Arabam search, category, or listing detail URL                                               |
| `keyword`            | String  | No       | None                                     | Vehicle, make, or model search text. Takes priority over `url`                                   |
| `location`           | String  | No       | None                                     | Turkish city name or Arabam city ID. Takes priority over `url`                                   |
| `results_wanted`     | Integer | No       | `20`                                     | Maximum number of vehicle records to save                                                        |
| `max_pages`          | Integer | No       | `10`                                     | Maximum number of search result pages to request                                                 |
| `enrich_details`     | Boolean | No       | `true`                                   | Open each listing page for specifications, seller details, and the full photo set                |
| `proxyConfiguration` | Object  | No       | Turkish residential Apify Proxy settings | Proxy settings. Keep residential proxy with country `TR`; other exit IPs can trigger a challenge |

### Output Data

| Field          | Type   | Description                              |
| -------------- | ------ | ---------------------------------------- |
| `listingId`    | String | Arabam listing number                    |
| `title`        | String | Listing title                            |
| `url`          | String | Direct listing URL                       |
| `make`         | String | Vehicle manufacturer                     |
| `model`        | String | Vehicle model                            |
| `variant`      | String | Trim or version                          |
| `year`         | Number | Model year                               |
| `mileage`      | Number | Mileage in kilometres                    |
| `drivetrain`   | String | Drivetrain when published                |
| `fuelType`     | String | Fuel type                                |
| `transmission` | String | Gearbox type                             |
| `bodyType`     | String | Body style                               |
| `engineSize`   | Number | Engine displacement in cubic centimetres |
| `horsePower`   | Number | Engine power when published              |
| `color`        | String | Exterior colour                          |
| `price`        | Number | Advertised price                         |
| `currency`     | String | Currency code                            |
| `city`         | String | City or region                           |
| `district`     | String | District or neighbourhood when published |
| `sellerType`   | String | Seller category                          |
| `sellerName`   | String | Seller or dealer name                    |
| `imageUrls`    | Array  | Vehicle photo URLs                       |
| `scrapedAt`    | String | Collection time in ISO format            |
| `sourceUrl`    | String | URL used to define the collection scope  |

### Usage Examples

#### Basic category collection

Collect 20 current automobile listings from the main used automobile category:

```json
{
    "url": "https://www.arabam.com/ikinci-el/otomobil",
    "results_wanted": 20,
    "max_pages": 2
}
```

#### Keyword and location search

Search for Volkswagen Passat listings in İstanbul. İstanbul is split into two regions on Arabam; this run uses İstanbul Avrupa, the larger region:

```json
{
    "keyword": "passat",
    "location": "İstanbul",
    "results_wanted": 50,
    "max_pages": 5
}
```

#### Direct listing lookup

Run one public listing URL to save its full specification and seller details as a single record:

```json
{
    "url": "https://www.arabam.com/ilan/galeriden-satilik-opel-astra-1-3-cdti-cosmo/galeriden-opel-astra-1-3-cdti-cosmo-2012-model-adana/41445483",
    "results_wanted": 1
}
```

#### Faster search-only run

Skip the extra listing pages when you only need titles, prices, years, mileage, and locations:

```json
{
    "url": "https://www.arabam.com/ikinci-el/otomobil",
    "results_wanted": 100,
    "max_pages": 5,
    "enrich_details": false
}
```

### Sample Output

```json
{
    "listingId": "41445483",
    "title": "Opel Astra 1.3 CDTI Cosmo",
    "url": "https://www.arabam.com/ilan/galeriden-satilik-opel-astra-1-3-cdti-cosmo/galeriden-opel-astra-1-3-cdti-cosmo-2012-model-adana/41445483",
    "make": "Opel",
    "model": "Astra",
    "variant": "1.3 CDTI Cosmo",
    "year": 2012,
    "mileage": 139000,
    "drivetrain": "Önden Çekiş",
    "price": 670000,
    "currency": "TRY",
    "imageUrls": [
        "https://arbstorage.mncdn.com/ilanfotograflari/2026/06/21/41445483/75ebfcd4-e765-4a3f-b4b8-296b35dd2993_image_for_silan_41445483_1920x1080.jpg"
    ],
    "fuelType": "Dizel",
    "transmission": "Düz",
    "bodyType": "Sedan",
    "engineSize": 1248,
    "horsePower": 95,
    "color": "Beyaz",
    "city": "Adana",
    "district": "Yeşiloba Mh. Seyhan",
    "sellerType": "galeri",
    "sellerName": "BOZOK OTOMOTİV",
    "scrapedAt": "2026-10-26T09:24:19.685Z",
    "sourceUrl": "https://www.arabam.com/ikinci-el/otomobil"
}
```

### Tips for Best Results

- Start with `results_wanted: 20` and `max_pages: 2` to check the dataset shape and runtime.
- Keep the Turkish residential proxy setting. A different exit country can return a security check instead of listings.
- Use a full Arabam URL after applying the filters you want on the site. The Actor keeps the URL filters when no keyword or location is supplied.
- For İstanbul, enter `İstanbul Anadolu` when you need the Anatolian side. Plain `İstanbul` selects İstanbul Avrupa.
- Turn off `enrich_details` for a faster run, then turn it back on when you need engine size, seller details, and the full photo set.
- Repeat the same input on a schedule to compare prices and inventory over time.
- If a field is missing, check the source listing. Arabam does not publish every specification for every vehicle.

### Integrations and Export Formats

- **Apify Dataset** - Download JSON, CSV, Excel, XML, and other supported formats.
- **Apify API** - Start runs and read dataset items from your own application.
- **Google Sheets** - Send vehicle records to a spreadsheet for review and comparison.
- **Webhooks** - Trigger a downstream service after a run finishes.
- **Make or Zapier** - Connect the dataset to a no-code workflow.

### Frequently Asked Questions

#### Do I need an Arabam.com account?

No. The Actor reads public Arabam.com pages. Access still depends on the site's current availability and policies.

#### Why does the Actor need a Turkish residential proxy?

Arabam.com returns a security check to many exit IPs outside Turkey. Turkish residential proxy access returns the normal listing pages. The default proxy setting already uses this configuration.

#### Can I use any Arabam.com URL?

Use public search, category, or listing URLs on `arabam.com` or `www.arabam.com`. URLs with filters are supported.

#### Why is a field missing?

Arabam.com does not publish every specification for every listing. When a value is absent on the source page, the Actor leaves that field out of the record.

#### Can I collect more than 20 listings?

Yes. Increase `results_wanted` and `max_pages`. Use filters to narrow a search when you need specific vehicles, cities, or price ranges.

#### Can I run this Actor on a schedule?

Yes. Schedule the Actor in Apify Console to refresh prices and inventory hourly, daily, weekly, or at another interval.

#### Can I export Arabam.com data to CSV or Excel?

Yes. Apify datasets support CSV, Excel, JSON, XML, and other formats.

#### What happens if Arabam changes its page layout?

The Actor checks each page before reading it and follows the site's own pagination. If a listing page fails, the search-page record is kept instead of dropping the vehicle. If a layout change breaks extraction, report it through the Issues tab so the parser can be updated.

#### Can I search by city and keyword together?

Yes. Enter both fields. The Actor resolves the city name against Arabam's current city filter and adds the keyword to the same search.

#### Is it legal to collect Arabam.com data?

Public data collection can be subject to website terms, laws, and privacy requirements. You are responsible for using the Actor lawfully and respecting Arabam.com policies.

### Related Actors

- [Cinch.co.uk Vehicle Scraper](https://apify.com/shahidirfan/cinch-co-uk-vehicle-scraper) - Collect used car inventory and pricing data from Cinch.co.uk.
- [IAAI Vehicles Scraper](https://apify.com/shahidirfan/iaai-vehicles-scraper) - Collect vehicle auction and lot data from IAAI.

### Support

For issues or feature requests, use the Issues tab on the Actor page or contact the developer through Apify.

### Legal Notice

This Actor is designed for legitimate collection of publicly available vehicle listing data. Users are responsible for complying with applicable laws, website terms, privacy rules, and any restrictions on storing or redistributing collected data.

# Actor input Schema

## `url` (type: `string`):

One Arabam.com search, category, or listing detail URL. Used as the search scope when keyword and location are empty. A search URL also becomes the base for a keyword or location search.

## `keyword` (type: `string`):

Vehicle, make, or model search text. Takes priority over the url field.

## `location` (type: `string`):

Turkish city name or Arabam city ID. Takes priority over the url field. Ambiguous names such as İstanbul use the largest matching region.

## `results_wanted` (type: `integer`):

Maximum number of vehicle records to save.

## `max_pages` (type: `integer`):

Maximum search pages to request per run.

## `enrich_details` (type: `boolean`):

Open each listing page to collect fuel type, transmission, body style, engine size, colour, seller, and the full photo set. Disable for a faster, lighter dataset.

## `proxyConfiguration` (type: `object`):

Apify Proxy settings. Arabam.com requires Turkish residential exit IPs; the default configuration uses TR residential proxy.

## Actor input object example

```json
{
  "url": "https://www.arabam.com/ikinci-el/otomobil",
  "results_wanted": 20,
  "max_pages": 10,
  "enrich_details": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "TR"
  }
}
```

# Actor output Schema

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

No description

# 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 = {
    "url": "https://www.arabam.com/ikinci-el/otomobil"
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/arabam-vehicle-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 = { "url": "https://www.arabam.com/ikinci-el/otomobil" }

# Run the Actor and wait for it to finish
run = client.actor("shahidirfan/arabam-vehicle-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 '{
  "url": "https://www.arabam.com/ikinci-el/otomobil"
}' |
apify call shahidirfan/arabam-vehicle-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,shahidirfan/arabam-vehicle-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/piN6e2P21duqqpH8p/builds/WX7coW2zfRiUuLTCQ/openapi.json
