# 🇲🇰 Reklama5 Macedonia Classifieds Scraper (`hipersoft/reklama5-scraper`) Actor

Scrape classified ads from Reklama5.mk, North Macedonia's largest marketplace — all categories. Search by keyword or paste a category URL and export one row per ad: title, price, image, city, category and URL.

- **URL**: https://apify.com/hipersoft/reklama5-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.0015 / listing scraped

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?

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

## 🇲🇰 Reklama5 Macedonia Classifieds Scraper

Scrape **classified ads from Reklama5.mk**, North Macedonia's largest classifieds marketplace, as clean, structured **JSON, CSV, Excel or XML**. Search by keyword or point it at any category — **electronics, cars, real estate, jobs, services** and everything in between — and it returns one tidy row per ad: **title, description, price, main image, city, category** and the listing URL. Perfect for market research, price monitoring, comparables and lead generation.

### What does Reklama5 Scraper do?

This actor turns Reklama5.mk search and category pages into a ready-to-use dataset. Give it one or more keywords (or paste category URLs straight from your browser), and it walks every result page and collects each ad with structured fields. It works across **every category** without configuration — a phone, a car and an apartment all come back as the same clean, flat row.

### What data can you get?

**Per ad:**

| Field | Description |
| --- | --- |
| `adId` | Reklama5 ad reference number. |
| `title` | Ad title (kept in its original language — Macedonian or Albanian). |
| `description` | Short ad description as shown in the results. |
| `url` | Link to the ad's detail page. |
| `imageUrl` | Main ad image URL, when present. |
| `price` | Price as a number. |
| `currency` | Currency code (EUR or MKD), when a price is shown. |
| `city` | City / region the ad is posted in. |
| `category` | Ad category (e.g. mobile phones, cars, apartments). |
| `sourceUrl` | The search or category URL the ad was collected from. |
| `collectedAt` | Timestamp when the row was collected. |

### Use cases

- **Market research** — map prices, models and stock across categories and cities.
- **Price monitoring** — track asking prices and new ads over time.
- **Comparables & valuation** — pull comparable ads by category and price band.
- **Lead generation** — build lists of sellers and offers for outreach.
- **Dashboards** — power reports and dashboards from clean, structured rows.
- **Automation** — feed fresh classifieds data into your own pipelines on a schedule.

### How to use it

1. Add **Reklama5 Macedonia Classifieds Scraper** to your Apify account and open its input.
2. Type one or more **Search keywords** (e.g. `iphone`, `golf 7`, `stan`) — or paste **Start URLs** from Reklama5.mk category pages.
3. Set **Max items** to cap the output.
4. Click **Run**.
5. Export the results as JSON, CSV, Excel or XML.

### Input

```json
{
  "queries": ["iphone"],
  "maxItems": 100
}
```

| Field | Description |
| --- | --- |
| `queries` | One or more keywords to search Reklama5.mk for. |
| `startUrls` | Optional Reklama5.mk search / category page URLs (used instead of, or with, keywords). |
| `maxItems` | Cap the number of ads. `0` = no limit. |
| `maxConcurrency` | How many requests to run in parallel. |

### What you get

One flat JSON row per ad, ready to export to CSV, Excel, JSON or XML.

```json
{
  "adId": "5828255",
  "title": "iPhone 14 --Kako Novi-- iBuy Mobile",
  "description": "iphone 14 128GB 329€ 6 Meseci Garancija",
  "url": "https://reklama5.mk/AdDetails?ad=5828255",
  "imageUrl": "https://reklama5.mk/photos/big/62b96f36-101d-4ae6-8b61-dfbf8083c6df.jpg",
  "price": 329,
  "currency": "EUR",
  "city": "Скопје Центар / Скопје",
  "category": "Мобилни телефони",
  "sourceUrl": "https://reklama5.mk/Search?q=iphone"
}
```

### FAQ

**Which categories are covered?**
Any category on Reklama5.mk — electronics, cars, real estate, jobs, services and more. Search by keyword or paste the category URL from your browser.

**In what language are titles returned?**
Ads are kept in their original language (Macedonian or Albanian, as posted), so nothing is lost in translation.

**How is price captured?**
The `price` and `currency` fields are filled whenever an ad shows a price. Reklama5 lists prices in EUR or MKD, and the currency is read directly from each ad. Ads marked "by agreement" simply come back with an empty price.

**What export formats are supported?**
JSON, CSV, Excel and XML — plus the Apify API and integrations for automation.

# Actor input Schema

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

One or more keywords to search Reklama5.mk for (e.g. "iphone", "stan", "golf 7"). Each keyword is searched across all categories and every result page is walked automatically. Leave empty if you provide Start URLs instead.

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

One or more Reklama5.mk search or category page URLs to scrape — copy them straight from your browser (e.g. https://reklama5.mk/Search?q=iphone). The scraper walks every page of each URL automatically. Optional — use this instead of, or together with, keywords.

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

Maximum number of ads to collect across all searches and start URLs (0 = no limit; collect everything).

## `maxConcurrency` (type: `integer`):

How many requests to run in parallel. Leave at the default unless you have a reason to change it.

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

Proxy settings. Leave the default for reliable access from any region.

## Actor input object example

```json
{
  "queries": [
    "iphone"
  ],
  "maxItems": 100,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

The results as dataset items.

# 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 = {
    "queries": [
        "iphone"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/reklama5-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 = { "queries": ["iphone"] }

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/reklama5-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 '{
  "queries": [
    "iphone"
  ]
}' |
apify call hipersoft/reklama5-scraper --silent --output-dataset

```

## MCP server setup

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