# OpenSooq Scraper السوق المفتوح: MENA Data API (`getascraper/opensooq-scraper`) Actor

Scrape OpenSooq السوق المفتوح listings, Saudi used cars, and MENA real estate. Export prices, specifications, locations, and images to Sheets, databases, or APIs. No login. $0.89 per 1,000 results on the Free tier.

- **URL**: https://apify.com/getascraper/opensooq-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** E-commerce, Real estate, Automation
- **Features:** Limited permissions
- **Stats:** 62 total users, 7 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.67 / 1,000 listing scrapeds

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

## OpenSooq Scraper السوق المفتوح: MENA Data API

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;margin-bottom:0">
<tr>
<td colspan="3" style="padding:10px 14px;background:#0F766E;border:none;border-top:3px solid #0F766E;border-left:1px solid #99F6E4;border-right:1px solid #99F6E4;color:#FFFFFF;border-radius:10px 10px 0 0">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">MARKETPLACE MONITORING SUITE</span>
<span style="color:#FFFFFF;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Collect focused public marketplace signals with bounded runs and safer change tracking.</span>
</td>
</tr>
<tr>
<td style="padding:10px 12px;border:none;border-left:1px solid #99F6E4;border-bottom:1px solid #99F6E4;vertical-align:top;width:33.333%;background:#ECFDF5;color:#1C1917">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-wgIkcDoB4BLatXVqT-gKD6pRRx9l-CompressJPEG.Online_img%28512x512%29_%2824%29.jpg" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/opensooq-scraper" style="color:#0F766E;text-decoration:none;font-weight:700;font-size:13px">OpenSooq classifieds</a></span><br>
<span style="color:#0F766E;font-size:11px;font-weight:700">&#10148; You are here</span>
</td>
<td style="padding:10px 12px;border:none;border-left:1px solid #99F6E4;border-bottom:1px solid #99F6E4;vertical-align:top;width:33.333%;background:#FFFFFF;color:#1C1917">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-99SM7BaciDgGvEMiV-TuAH07zNQG-unnamed_%2834%29.png" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/mourjan-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Mourjan classifieds</a></span><br>
<span style="color:#57534E;font-size:11px">Property, cars, jobs, and services</span>
</td>
<td style="padding:10px 12px;border:none;border-left:1px solid #99F6E4;border-right:1px solid #99F6E4;border-bottom:1px solid #99F6E4;vertical-align:top;width:33.333%;background:#FFFFFF;color:#1C1917">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-2w45ycTs97umhvyVf-lZhK0QGIM1-CompressJPEG.Online_img%28512x512%29_%2822%29.jpg" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/haraj-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Haraj classifieds</a></span><br>
<span style="color:#57534E;font-size:11px">KSA classified listings</span>
</td>
</tr>
</table>
<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;margin-top:0;margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#ECFDF5;border:1px solid #99F6E4;border-top:none;color:#1C1917">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Turn OpenSooq listings into a ready-to-use MENA marketplace dataset.</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Search 20 countries for cars, real estate, and general classifieds with clean flat price, location, and seller rows.</span>
</td>
</tr>
</table>
<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;margin-top:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #99F6E4;vertical-align:top;border-top:none;color:#1C1917;border-radius:0 0 0 10px">
<span style="font-size:15px;font-weight:800;color:#0F766E">🌍 20 MENA countries</span><br>
<span style="font-size:12px;color:#57534E">Jordan, Saudi Arabia, UAE, and 17 more markets in one Actor.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #99F6E4;border-left:none;vertical-align:top;border-top:none;color:#1C1917">
<span style="font-size:15px;font-weight:800;color:#0F766E">🚗 Guided Saudi verticals</span><br>
<span style="font-size:12px;color:#57534E">Cars for sale and apartments with source-native filters.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #99F6E4;border-left:none;vertical-align:top;border-top:none;color:#1C1917">
<span style="font-size:15px;font-weight:800;color:#0F766E">📋 Fully flat rows</span><br>
<span style="font-size:12px;color:#57534E">No nested JSON, clean exports to CSV or Sheets.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #99F6E4;border-left:none;vertical-align:top;border-top:none;color:#1C1917;border-radius:0 0 10px 0">
<span style="font-size:15px;font-weight:800;color:#0F766E">🔁 Residential by default</span><br>
<span style="font-size:12px;color:#57534E">Built-in proxy rotation to reduce regional blocks.</span>
</td>
</tr>
</table>

**Turn live OpenSooq (السوق المفتوح) listings into Saudi used-car and MENA real-estate data.** Export prices, specifications, locations, and images from Jordan, Saudi Arabia, UAE, and 17 other markets to spreadsheets, databases, or APIs. Built for auto dealers, real-estate agencies, price trackers, and market-intelligence teams.

***

### 💡 What can you do with it?

- **I am an auto dealer or reseller** looking to monitor price benchmarks and active vehicle listings across specific models, years, and mileages in the Middle East.
- **I am a real estate agent** tracking historical property valuations, areas, and listing activity across major cities like Amman or Riyadh.
- **I am a market-research analyst** building weekly reports on consumer demand and pricing strategies in the MENA retail space.

### 🚗 Saudi used-car and MENA real-estate data

Run a country-specific search to build a Saudi used-car price feed or a MENA real-estate listing dataset. The guided Saudi routes support cars for sale plus apartments for sale or rent, with source-native price, location, sort, image, price-disclosure, and shop filters. Vehicle runs can also filter model year and mileage band; apartment runs can filter bedrooms, bathrooms, and surface area.

Guided vehicle and apartment routes are currently validated for the Saudi Arabia site. For another country, a different property subtype, or filters not shown in the form, paste an exact OpenSooq results URL into `startUrls`. Exact URLs always take precedence over every guided field.

***

### 🚀 How to scrape OpenSooq data step-by-step

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:16px 14px;width:33%;background:#ECFDF5;border:1px solid #99F6E4;border-radius:10px 0 0 10px;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#0F766E;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Pick a country and mode</span><br>
<span style="font-size:12px;color:#57534E">Choose a country site, then a guided vertical or a keyword search.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#ECFDF5;border:1px solid #99F6E4;border-left:none;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#0F766E;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set filters and limits</span><br>
<span style="font-size:12px;color:#57534E">Add price, location, and vehicle or property filters, then set a limit.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#ECFDF5;border:1px solid #99F6E4;border-left:none;border-radius:0 10px 10px 0;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#0F766E;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Export the dataset</span><br>
<span style="font-size:12px;color:#57534E">Download flat JSON, CSV, or Excel, or switch to a dedicated view.</span>
</td>
</tr>
</table>

***

### 📥 Input

| Field                | Type      | Required | Description                                                                                                         |
| :------------------- | :-------- | :------- | :------------------------------------------------------------------------------------------------------------------ |
| `site`               | `enum`    | Yes      | Select which OpenSooq country site to scrape (Jordan, Saudi Arabia, UAE, Kuwait, etc.).                             |
| `query`              | `string`  | No       | Text keyword to search for (e.g., `iphone`, `apartment`, `bmw`). Leave empty to browse all.                         |
| `startUrls`          | `array`   | No       | Exact OpenSooq search URLs. These take precedence and preserve every source filter.                                 |
| `vertical`           | `enum`    | No       | General search, Saudi cars for sale, Saudi apartments for sale, or Saudi apartments for rent.                      |
| `category`           | `enum`    | No       | Current OpenSooq category ID for General Search. Cannot be combined with a guided vertical.                         |
| `city`               | `string`  | No       | Numeric OpenSooq city ID (for example, Riyadh is `24`).                                                              |
| `neighborhood`       | `string`  | No       | Numeric OpenSooq neighborhood ID. Requires `city`.                                                                   |
| `priceFrom`          | `integer` | No       | Only include listings priced at or above this value.                                                                |
| `priceTo`            | `integer` | No       | Only include listings priced at or below this value.                                                                |
| `vehicleYearFrom/To` | `integer` | No       | Model-year range for the Cars for Sale vertical.                                                                    |
| `vehicleMileageBand` | `enum`    | No       | Source-defined mileage band for the Cars for Sale vertical.                                                         |
| `propertyBedrooms`   | `enum`    | No       | Bedroom option for an apartment vertical.                                                                           |
| `propertyBathrooms`  | `enum`    | No       | Bathroom option for an apartment vertical.                                                                          |
| `surfaceFrom/To`     | `integer` | No       | Apartment surface range in square metres.                                                                            |
| `sortBy`             | `enum`    | No       | Source-supported general, vehicle, or property sort order.                                                          |
| `hasImages`          | `boolean` | No       | Only return listings containing image galleries.                                                                    |
| `hasPrice`           | `boolean` | No       | Only return listings that disclose an explicit price.                                                               |
| `isShop`             | `boolean` | No       | Only return listings posted by registered business shops.                                                           |
| `maxItems`           | `integer` | Yes      | Maximum number of listing records to extract.                                                                       |
| `proxyConfiguration` | `object`  | Yes      | Proxy options. Pre-configured residential proxies are recommended to guarantee clean and unblocked regional access. |

***

### 📤 Output

Each row represents a single marketplace listing. The dataset is completely flat with no nested JSON structures, ensuring perfect exports to CSV, Excel, or Google Sheets.

```json
{
    "id": "276150375",
    "url": "https://jo.opensooq.com/ar/search/276150375",
    "title": "190 m2 3 Bedrooms Apartments for Sale in Zarqa Dahiet Al Madena Al Monawwara",
    "descriptionPreview": "شقة طابقية مميزة تشطيبات فندقية عالية الجودة مكونة من 3 غرف نوم...",
    "price": "66,000",
    "currency": "JOD",
    "city": "Zarqa",
    "neighborhood": "Dahiet Al Madena Al Monawwara",
    "category": "Property For Sale",
    "imageUrl": "https://opensooq-images.os-cdn.com/previews/700x0/a9/ab/a9abf520684bb5399eb5f27fc4620d01dc354b6e19860aa901257c8343f65565.jpg",
    "memberDisplayName": "mohamad abo khadra",
    "phoneNumber": "07996786XX",
    "phoneRevealKey": "0cd4416532a0ce20860ce546ba8dc236",
    "scrapedAt": "2026-06-15T12:38:09.000Z"
}
```

#### Field reference

| Field                | Type     | Description                                             |
| :------------------- | :------- | :------------------------------------------------------ |
| `id`                 | `string` | Unique identifier of the listing on OpenSooq.           |
| `url`                | `string` | Canonical link to the listing page.                     |
| `title`              | `string` | Listing display title.                                  |
| `descriptionPreview` | `string` | Short preview text of the listing description.          |
| `price`              | `string` | Numeric price value parsed from the listing.            |
| `currency`           | `string` | ISO currency code (e.g. JOD, SAR, AED).                 |
| `city`               | `string` | Name of the city location (English or Arabic).          |
| `neighborhood`       | `string` | Local neighborhood name of the listing.                 |
| `category`           | `string` | Major category classification of the listing.           |
| `imageUrl`           | `string` | Primary lot cover photo URL.                            |
| `memberDisplayName`  | `string` | Public display name of the hosting seller.              |
| `phoneNumber`        | `string` | Masked phone number (last 2 digits hidden by OpenSooq). |
| `phoneRevealKey`     | `string` | Security key used to request full number on platform.   |
| `scrapedAt`          | `string` | ISO timestamp of when the row was scraped.              |

***

### 💰 Pricing and cost

Pricing is pay-per-result and billed per listing successfully saved to your dataset.

| Apify plan | Price per 1,000 saved listings |
| ---------- | -----------------------------: |
| Free       |                          $0.89 |
| Bronze     |                          $0.82 |
| Silver     |                          $0.74 |
| Gold       |                          $0.67 |

The platform also charges a small **$0.00005 Actor Start** event per allocated GB (minimum one event). For example, 1,000 successfully saved listings cost $0.89 on the Free plan, plus the start event.

***

### 🗂️ Dataset views

Choose the view that fits your job instead of manually selecting fields:

| View                  | Best for                                                                                  |
| --------------------- | ----------------------------------------------------------------------------------------- |
| **🔎 Listings**       | A clean all-purpose list of listing, price, location, seller, phone, and link fields.     |
| **🚗 Vehicle Specs**  | Vehicle comparisons using year, mileage, price, and location.                             |
| **🏠 Property Leads** | Real-estate lead review using bedrooms, bathrooms, area, furnishing, and phone fields.    |
| **🏪 Seller Signals** | Seller qualification using verification, rating, activity, category, and contact signals. |
| **📊 Market Monitor** | Tracking price, status, dates, media, and the source search across repeated runs.         |

***

### ⭐ Enjoying OpenSooq scraper?

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:20px 24px 14px;background:#ECFDF5;border:1px solid #99F6E4;border-left:5px solid #0F766E;border-radius:10px 10px 0 0;color:#1C1917">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Covered 20 MENA countries of live listings, prices, and images in one flat dataset?</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other auto dealers and real estate agents tracking MENA marketplace listings find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#0F766E;border:1px solid #0F766E;border-left:5px solid #0F766E;border-top:none;border-radius:0 0 10px 10px;text-align:center;color:#FFFFFF">
<a href="https://apify.com/getascraper/opensooq-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

***

### ✨ Tips and best practices

- **Specify a country proxy.** OpenSooq geolocates search results based on visitor IPs. Always configure your proxy configuration to route through the target country (e.g., `country-JO` for Jordan, `country-SA` for Saudi Arabia) to secure KSA-localized listing speeds and density.
- **Use numeric location IDs in guided mode.** OpenSooq serializes guided city and neighborhood filters as `city_ids` and `nhood_ids`. If you only have a location name or want a non-Saudi vertical, configure the search on OpenSooq and paste its complete results URL into `startUrls`.
- **Bypass browser overhead.** This scraper uses unblocked direct server data extraction, skipping slow web page loadings. This cuts your runtimes and platform compute costs by 90%!

***

### ❓ FAQ

##### Does it get blocked by OpenSooq?

Residential proxies are enabled by default to reduce regional access failures. If OpenSooq still returns a challenge, the Actor reports it as a blocked response instead of silently treating it as an empty search. Malformed payloads and source-shape changes are also reported separately, while a valid empty search completes normally.

##### Does it extract full seller phone numbers?

No. Phone numbers are masked by OpenSooq (last 2 digits hidden, e.g., `07996786XX`) to prevent spam. The `phoneRevealKey` field is provided for reference, but full unmasking requires manual authentication on the OpenSooq platform.

##### How fresh is the data?

Extremely fresh. The scraper executes live requests on every query, retrieving the absolute latest classified listings posted on OpenSooq in real-time.

##### Are all 20 countries supported?

Yes. The scraper supports Jordan, Saudi Arabia, UAE, Kuwait, Bahrain, Oman, Qatar, Iraq, Egypt, Yemen, Libya, Sudan, Lebanon, Palestine, Syria, Algeria, Morocco, Tunisia, Turkey, and Mauritania.

##### هل يدعم API السوق المفتوح بيانات السيارات والعقارات في السعودية؟

Yes. Select Saudi Arabia, then search a vehicle or property category directly, or provide an exact OpenSooq search URL to preserve the source filters.

***

### 🔍 Target SEO keywords

- OpenSooq API
- السوق المفتوح API
- scrape OpenSooq Jordan
- OpenSooq Saudi Arabia scraper
- Saudi used-car data API
- MENA real-estate listings API
- MENA classifieds database
- Dubai car listings scraper

***

### 🛟 Disclaimers and support

- **Disclaimer:** This Actor retrieves publicly available classified job and product listings on OpenSooq. Make sure your usage complies with OpenSooq Terms of Service and applicable laws.
- **Support:** Open an issue from the Actor page in the Apify Console for bug reports or feature requests.

### 🔗 Other actors

- [Haraj scraper](https://apify.com/getascraper/haraj-scraper) ↗ - extracts Saudi Arabia classifieds listings.
- [Avito Auto Scraper](https://apify.com/getascraper/avito-auto-scraper) ↗ - pulls used car listings and prices from Avito Auto.
- [58.com Scraper](https://apify.com/getascraper/58-classifieds-scraper) ↗ - extracts China classifieds and real estate listings.
- [Milanuncios scraper](https://apify.com/getascraper/milanuncios-scraper) ↗ - pulls Spain classifieds listings, prices, and seller details.
- [ss.com Latvia Scraper](https://apify.com/getascraper/ss-com-latvia-scraper) ↗ - collects classifieds listings from Latvia's ss.com.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/opensooq-scraper/changelog.md

# Actor input Schema

## `site` (type: `string`):

Select which OpenSooq country site to scrape.

## `query` (type: `string`):

Optional keyword (for example, 'toyota' or 'شقة'). It can be combined with a guided vertical, or left empty to browse that vertical.

## `queries` (type: `array`):

Paste multiple keywords to search and scrape simultaneously in a single bulk run.

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

Optional exact OpenSooq search URLs. When supplied, these URLs take absolute precedence; all guided fields are ignored so every source filter is preserved.

## `vertical` (type: `string`):

Choose a source-validated Saudi vehicle or apartment route, or keep General Search. Guided verticals currently require Country Site = Saudi Arabia (sa).

## `category` (type: `string`):

Optional category for General Search. Do not combine this with a Guided Vertical.

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

Optional numeric OpenSooq city ID. Saudi Riyadh is 24. For city names or URL slugs, use Exact OpenSooq Search URLs.

## `neighborhood` (type: `string`):

Optional numeric OpenSooq neighborhood ID. Requires City ID. Use an exact URL when you only know the neighborhood name.

## `priceFrom` (type: `integer`):

Only return listings priced at or above this value. Leave empty for no minimum.

## `priceTo` (type: `integer`):

Only return listings priced at or below this value. Leave empty for no maximum.

## `vehicleYearFrom` (type: `integer`):

Cars for Sale only. Earliest model year to include.

## `vehicleYearTo` (type: `integer`):

Cars for Sale only. Latest model year to include.

## `vehicleMileageBand` (type: `string`):

Cars for Sale only. OpenSooq exposes mileage as source-defined bands rather than an arbitrary numeric range.

## `propertyBedrooms` (type: `string`):

Apartment verticals only. Select one OpenSooq bedroom option.

## `propertyBathrooms` (type: `string`):

Apartment verticals only. Select one OpenSooq bathroom option.

## `surfaceFrom` (type: `integer`):

Apartment verticals only. Minimum property surface in square metres.

## `surfaceTo` (type: `integer`):

Apartment verticals only. Maximum property surface in square metres.

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

Order results using OpenSooq's sort codes. Vehicle- and property-specific sorts require the matching Guided Vertical.

## `hasImages` (type: `boolean`):

Only return listings containing image galleries.

## `hasPrice` (type: `boolean`):

Only return listings that disclose an explicit price.

## `isShop` (type: `boolean`):

Only return listings posted by registered business shops.

## `unmaskPhones` (type: `boolean`):

Attempt to unmask and extract complete mobile phone numbers for leads generation.

## `accessToken` (type: `string`):

Optional Authorization token (Bearer JWT) used to successfully reveal phone numbers. Leave blank if not available.

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

Maximum number of listing records to extract.

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

REQUIRED. Pre-configured residential proxies are recommended.

## Actor input object example

```json
{
  "site": "sa",
  "query": "toyota",
  "queries": [],
  "startUrls": [],
  "vertical": "cars_for_sale",
  "category": "",
  "city": "24",
  "neighborhood": "",
  "vehicleMileageBand": "",
  "propertyBedrooms": "",
  "propertyBathrooms": "",
  "sortBy": "recent",
  "hasImages": false,
  "hasPrice": false,
  "isShop": false,
  "unmaskPhones": false,
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (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 = {
    "site": "sa",
    "query": "toyota",
    "queries": [],
    "startUrls": [],
    "vertical": "cars_for_sale",
    "category": "",
    "city": "24",
    "neighborhood": "",
    "vehicleMileageBand": "",
    "propertyBedrooms": "",
    "propertyBathrooms": "",
    "sortBy": "recent",
    "hasImages": false,
    "hasPrice": false,
    "isShop": false,
    "unmaskPhones": false,
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/opensooq-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 = {
    "site": "sa",
    "query": "toyota",
    "queries": [],
    "startUrls": [],
    "vertical": "cars_for_sale",
    "category": "",
    "city": "24",
    "neighborhood": "",
    "vehicleMileageBand": "",
    "propertyBedrooms": "",
    "propertyBathrooms": "",
    "sortBy": "recent",
    "hasImages": False,
    "hasPrice": False,
    "isShop": False,
    "unmaskPhones": False,
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/opensooq-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 '{
  "site": "sa",
  "query": "toyota",
  "queries": [],
  "startUrls": [],
  "vertical": "cars_for_sale",
  "category": "",
  "city": "24",
  "neighborhood": "",
  "vehicleMileageBand": "",
  "propertyBedrooms": "",
  "propertyBathrooms": "",
  "sortBy": "recent",
  "hasImages": false,
  "hasPrice": false,
  "isShop": false,
  "unmaskPhones": false,
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call getascraper/opensooq-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/opensooq-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/wgIkcDoB4BLatXVqT/builds/fPwIO1pFodeDfdJo3/openapi.json
