# OpenSooq السوق المفتوح Scraper — Largest MENA Classifieds (`boring_internet_explorer/opensooq-scraper`) Actor

Scrape structured listing data from OpenSooq, the largest classifieds marketplace in MENA. Extract titles, prices, locations, seller info, media, and category details across 20 markets and 17 categories.

- **URL**: https://apify.com/boring\_internet\_explorer/opensooq-scraper.md
- **Developed by:** [Boring Internet Explorer](https://apify.com/boring_internet_explorer) (community)
- **Categories:** E-commerce, Real estate, Lead generation
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.49 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## 🛍️ OpenSooq السوق المفتوح Scraper — MENA Classifieds Data | 20 Markets

Scrapes structured listing data from **OpenSooq** (`opensooq.com`), the largest mobile-first classifieds marketplace in the Middle East and North Africa (MENA) region. OpenSooq connects buyers, sellers, renters, job seekers, and service providers across 20 countries, with over 2 billion monthly pageviews and 120 million unique visitors each year — with an item sold every 15 seconds.

Given an OpenSooq **category or search URL**, the scraper collects listing information and returns structured data including listing identifiers, titles, descriptions, pricing, location, media, seller information, and category details.

### Why use this scraper?

OpenSooq is the most active classifieds marketplace in MENA, with over 120 subcategories spanning autos, real estate, jobs, and general classifieds — with an estimated USD 30 billion in goods sold annually across the platform.

Collecting this data manually across thousands of listings and 20 markets is not feasible. This scraper provides structured listing records that can be used for:

- 🚗 Monitoring vehicle listings, prices, and specs across makes and models.
- 🏠 Tracking real estate listings across MENA cities and neighborhoods.
- 💰 Comparing prices across categories, countries, and listing types.
- 📊 Building market intelligence dashboards for MENA classifieds.
- 🔍 Collecting listing descriptions and seller information at scale.
- 🖼️ Building search and comparison tools with listing images.
- 📈 Tracking listing activity, status, and engagement over time.
- 💼 Collecting job listings and employment market data across the region.
- 🤖 Powering analytics, enrichment pipelines, and AI applications.
- 📦 Conducting MENA e-commerce and marketplace research.

### Supported markets

The scraper supports all 20 OpenSooq markets:

| Country      | URL                           |
| ------------ | ----------------------------- |
| Jordan       | `https://jo.opensooq.com/en/` |
| Saudi Arabia | `https://sa.opensooq.com/en/` |
| UAE          | `https://ae.opensooq.com/en/` |
| Kuwait       | `https://kw.opensooq.com/en/` |
| Bahrain      | `https://bh.opensooq.com/en/` |
| Oman         | `https://om.opensooq.com/en/` |
| Qatar        | `https://qa.opensooq.com/en/` |
| Iraq         | `https://iq.opensooq.com/en/` |
| Egypt        | `https://eg.opensooq.com/en/` |
| Yemen        | `https://ye.opensooq.com/en/` |
| Libya        | `https://ly.opensooq.com/en/` |
| Sudan        | `https://sd.opensooq.com/en/` |
| Lebanon      | `https://lb.opensooq.com/en/` |
| Palestine    | `https://ps.opensooq.com/en/` |
| Syria        | `https://sy.opensooq.com/en/` |
| Algeria      | `https://dz.opensooq.com/en/` |
| Morocco      | `https://ma.opensooq.com/en/` |
| Tunisia      | `https://tn.opensooq.com/en/` |
| Turkey       | `https://tr.opensooq.com/en/` |
| Mauritania   | `https://mr.opensooq.com/en/` |

### Supported categories

The scraper works across all major OpenSooq categories:

| Category                 |
| ------------------------ |
| Autos                    |
| Mobile & Tablet          |
| Gaming & Toys            |
| Computers & Laptops      |
| Electronics & Appliances |
| Property For Sale        |
| Property For Rent        |
| Home & Garden            |
| Fashion And Kids         |
| Beauty & Health          |
| Food & Supplements       |
| Services                 |
| Jobs                     |
| Pets & Accessories       |
| Leisure & Collectibles   |
| Sports & Fitness         |
| Businesses & Equipment   |

### Supported URL types

| Type                  | Example                                                |
| --------------------- | ------------------------------------------------------ |
| Category              | `https://sa.opensooq.com/en/cars`                      |
| Subcategory           | `https://sa.opensooq.com/en/cars/cars-for-sale`        |
| Subcategory with make | `https://sa.opensooq.com/en/cars/cars-for-sale/toyota` |
| Search                | `https://sa.opensooq.com/en/find?term=iphone`          |

### Input fields

| Field                | Type   | Description                                   |
| -------------------- | ------ | --------------------------------------------- |
| `startUrls`          | array  | OpenSooq category or search URLs to scrape.   |
| `maxItems`           | number | Maximum number of listings to scrape per URL. |
| `proxyConfiguration` | object | Optional proxy settings.                      |

### Example input

```json
{
  "startUrls": [{ "url": "https://sa.opensooq.com/en/cars" }],
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

### Output

Each scraped listing is stored as one record in the dataset.

### Example output

```json
{
  "scrapedAt": "2026-08-12T20:36:13.404Z",
  "id": 285503676,
  "url": "https://sa.opensooq.com/search/285503676",
  "title": "هافال V7فل كامل 2027",
  "description": "هافال V7 2027 جديدة  هافال V7 2027 جديدة للبيع قير اوتماتيك بنزين اصفار ══════ (( المواصفات)) ══════ هافال V7 2026 * نوع المحرك…",
  "price": {
    "value": "118,450 SAR",
    "currency": "SAR"
  },
  "location": {
    "country": "Saudi Arabia",
    "city": "Al Riyadh",
    "neighborhood": "Al Qadisiyah"
  },
  "category": {
    "categoryCode": "Autos",
    "categoryLabel": "Autos",
    "subCategoryCode": "CarsForSale",
    "subCategoryLabel": "Cars For Sale"
  },
  "media": {
    "mainImage": "https://opensooq-imagesv2.os-cdn.com/previews/1024x0/f1/ae/f1ae4ea14ffeaad125dcf07775d9e12145ba8c54c4610c1643038ec63db15a71.jpg.webp",
    "imageCount": 7,
    "hasVideo": false,
    "has360": false
  },
  "seller": {
    "sellerId": "10783823",
    "sellerName": "معرض واجهة القادسيه للسيارات",
    "sellerRating": 5,
    "sellerRatingCount": 1,
    "hasPhone": true
  },
  "postedAgo": "2 hours ago",
  "postedDate": "2026-08-12",
  "expiresAt": "11-10-2026",
  "status": "featured",
  "isActive": true,
  "highlights": "Haval » V7 » 2,027 » New",
  "features": ["New", "Haval", "V7", "2,027", "0 km", "SUV", "5"],
  "badges": ["add_on_chat", "featured"]
}
```

### Field reference

| Field                       | Description                                                    |
| --------------------------- | -------------------------------------------------------------- |
| `scrapedAt`                 | Timestamp of when the listing was scraped.                     |
| `id`                        | Unique OpenSooq listing identifier.                            |
| `url`                       | Full listing page URL.                                         |
| `title`                     | Listing title.                                                 |
| `description`               | Truncated listing description.                                 |
| `price.value`               | Formatted price string with currency, such as `"118,450 SAR"`. |
| `price.currency`            | ISO currency code, such as `"SAR"`.                            |
| `location.country`          | Country the listing is posted in.                              |
| `location.city`             | Listing city.                                                  |
| `location.neighborhood`     | Neighborhood name, when available.                             |
| `category.categoryCode`     | Top-level category code.                                       |
| `category.categoryLabel`    | Top-level category label.                                      |
| `category.subCategoryCode`  | Subcategory code.                                              |
| `category.subCategoryLabel` | Subcategory label.                                             |
| `media.mainImage`           | URL of the main listing image.                                 |
| `media.imageCount`          | Total number of images attached to the listing.                |
| `media.hasVideo`            | Whether the listing includes a video.                          |
| `media.has360`              | Whether the listing includes a 360° view.                      |
| `seller.sellerId`           | Seller's OpenSooq user ID.                                     |
| `seller.sellerName`         | Seller's display name.                                         |
| `seller.sellerRating`       | Seller's average rating.                                       |
| `seller.sellerRatingCount`  | Number of ratings the seller has received.                     |
| `seller.hasPhone`           | Whether the seller has a phone number listed.                  |
| `postedAgo`                 | Human-readable relative post time, such as `"2 hours ago"`.    |
| `postedDate`                | Date the listing was posted, in `YYYY-MM-DD` format.           |
| `expiresAt`                 | Listing expiry date.                                           |
| `status`                    | Listing status, such as `"featured"` or `"active"`.            |
| `isActive`                  | Whether the listing is currently active.                       |
| `highlights`                | Key listing attributes as a formatted string.                  |
| `features`                  | List of structured listing attributes.                         |
| `badges`                    | Platform badges applied to the listing, such as `"featured"`.  |

### ❓ FAQ

**What types of URLs can I provide?**

The scraper supports category and search URLs across all 20 OpenSooq markets. Provide any category, subcategory, make-filtered, or search URL and the scraper will paginate through all available results.

**Can I scrape multiple markets at once?**

Yes. Add multiple URLs from different market subdomains to `startUrls` and the scraper will process each independently.

**What categories are supported?**

The scraper works across all major OpenSooq categories including Autos, Mobile & Tablet, Property For Sale, Property For Rent, Electronics & Appliances, Jobs, Services, Pets & Accessories, Fashion, Beauty & Health, Sports & Fitness, and more — across all 20 supported markets.

**Can I scrape multiple categories at once?**

Yes. Add multiple category URLs to `startUrls` and the scraper will process each one independently, including pagination.

***

### 🔗 Want More Data in the MENA Market?

#### If you found this scraper useful, check out our other scrapers:

[Haraj حراج Scraper](https://apify.com/boring_internet_explorer/haraj-scraper) — Scrape structured listing data from haraj.com.sa, Saudi Arabia's most popular classifieds platform, across vehicles, real estate, electronics, livestock, furniture, jobs, and more.

[Soum سوم Product Scraper](https://apify.com/boring_internet_explorer/soum-scraper) — Scrape detailed product data from soum.sa, Saudi Arabia's marketplace for new and used products. Extract product IDs, brands, models, specifications, condition, pricing, and images.

[eXtra - اكسترا Product Scraper](https://apify.com/boring_internet_explorer/extra-scraper) — Extract product data from extra.com — prices, discounts, stock availability, brands, images, model numbers, ratings, and category breadcrumbs — across Saudi Arabia, Oman, and Bahrain.

[🥷🏽 Ninja نينجا Product Scraper](https://apify.com/boring_internet_explorer/ninja-product-scraper) — Extract product data from ananinja.com across groceries, pharmacy, beauty, and household products across Saudi Arabia, Bahrain, Qatar, and Kuwait.

[Jarir جرير Product Scraper](https://apify.com/boring_internet_explorer/jarir-scraper) — Scrape product data from jarir.com, the GCC's leading retailer for electronics, books, and office supplies across all 5 storefronts (KSA, UAE, Qatar, Bahrain, Kuwait).

[Saudi Companies Directory Scraper](https://apify.com/boring_internet_explorer/saudi-companies-ecosystem-scraper) — Scrapes structured directory data from ecosystemsa.com covering VCs, angel groups, accelerators, incubators, and startups.

[Saudi Companies Scraper — 19K+ Companies](https://apify.com/boring_internet_explorer/companies-scraper) — Extract 19,000+ Saudi and Arab company profiles with contacts, industries, funding stage, and Arabic and English fields.

***

### 🛠️ Need a custom extension?

Need this scraper adapted to your use case — extra fields, additional filters, a different output format, or a new market? Just reach out to us by email and we'll be happy to help.

# Actor input Schema

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

URLs to scrape

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

The maximum number of items to fetch

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

Your proxy configuration from Apify

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://sa.opensooq.com/en/cars"
    }
  ],
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://sa.opensooq.com/en/cars"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("boring_internet_explorer/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 = { "startUrls": [{ "url": "https://sa.opensooq.com/en/cars" }] }

# Run the Actor and wait for it to finish
run = client.actor("boring_internet_explorer/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 '{
  "startUrls": [
    {
      "url": "https://sa.opensooq.com/en/cars"
    }
  ]
}' |
apify call boring_internet_explorer/opensooq-scraper --silent --output-dataset

```

## MCP server setup

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