# Jofogas Scraper — Hungary Classified Ads & Prices (`logiover/jofogas-hungary-marketplace-scraper`) Actor

Scrape Jofogas.hu, Hungary's largest classified ads marketplace. Extract title and description, price in forint, county and region, GPS coordinates, listing date, category, business-seller flag and photos across every category.

- **URL**: https://apify.com/logiover/jofogas-hungary-marketplace-scraper.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.10 / 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.
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

## Jofogas Scraper — Hungary Classified Ads & Prices

Hungary's largest classified ads marketplace in rows: title and description, price in forint, county, GPS coordinates, listing date, category, business-seller flag and photos — across every category.

### What does the Jofogas Scraper do?

This Actor collects classified ads from **Jofogas.hu**, the largest consumer marketplace in Hungary and the country's default place to buy and sell second-hand. You give it a region and optionally a keyword, and it returns the ads, thirty-six to a page.

The ads are read from the page's own server state, which carries them complete: the price as a number rather than formatted text, the county, **GPS coordinates on every row**, and a flag marking whether the seller is a business or a private individual. That last one is the split most analyses of a classifieds market start from — traders and private sellers price very differently — and it is rarely available without inference.

### Who is it for?

- **Second-hand and recommerce platforms** benchmarking Hungarian resale prices.
- **Dealers and traders** tracking private-sale asking prices in their county.
- **Market researchers** measuring supply and pricing in a consumer category.
- **Price-guide and valuation services** building Hungarian resale curves.
- **Lead-generation teams** identifying active business sellers.
- **Geo analysts** mapping where supply concentrates using per-ad coordinates.

### Use cases

- Track asking prices for a product category across Hungary.
- Separate business from private sellers to compare their pricing.
- Map ad density by county using the coordinates on every row.
- Watch new-listing volume in a category as a demand indicator.
- Build a second-hand price index for consumer electronics.
- Find the highest-volume business sellers in a category.
- Feed an AI agent live Hungarian marketplace data for pricing questions.

### Why use this Jofogas Scraper?

- **Business-versus-private flag on every ad**, taken from the source rather than guessed.
- **GPS coordinates on every row**, not just a county name.
- **Price as a clean number** in forint.
- **Listing dates as ISO**, with the Hungarian label preserved alongside.
- **Thirty-six ads per page** with pages fetched in parallel.
- **Keyless and login-free.**

### What data can you extract?

One row per ad. Anything the source left blank comes back as `null`.

| Field | Description |
| --- | --- |
| `adId` | Jofogas ad ID |
| `url` | Link to the ad |
| `title` | Ad title |
| `description` | Ad description |
| `price` | Asking price in forint |
| `category` | Category name |
| `region` | County or region |
| `latitude` | Latitude |
| `longitude` | Longitude |
| `publishedAt` | Listing date as ISO |
| `publishedText` | Listing date as the site shows it |
| `isBusiness` | Business or Private |
| `imageUrl` | First photo |
| `scrapedAt` | ISO timestamp of collection |

#### Sample output

```json
{
  "adId": "160551232",
  "url": "https://www.jofogas.hu/borsod_abauj_zemplen/Kukirin_A1_roller_160551232.htm",
  "title": "Kukirin A1 új , bontatlan , garanciás elektromos roller",
  "description": "Eladó új, bontatlan, garanciás Kukirin A1 elektromos roller.",
  "price": 150000,
  "category": "Egyéb",
  "region": "Borsod-Abaúj-Zemplén",
  "latitude": 48.121389,
  "longitude": 21.4124681,
  "publishedAt": "2026-08-22T09:06:28.000Z",
  "publishedText": "ma, 11:06",
  "isBusiness": "Private",
  "imageUrl": "https://img.jofogas.hu/thumbs/Kukirin_A1_roller.jpg",
  "scrapedAt": "2026-08-22T09:15:18.844Z"
}
```

### How to use the Jofogas Scraper

#### Option A — the whole country

Leave **Region** as `magyarorszag`, set **Maximum results** and run.

#### Option B — one county or a keyword

Set **Region** to a county slug such as `budapest` or `pest`, or put a keyword in **Search term** — `telefon`, `auto`, `butor`.

#### Option C — a price watch

Schedule a daily run and diff by `adId` to track what sold and what changed price.

### Input parameters

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| `region` | string | `magyarorszag` | Region slug as it appears in a Jofogas URL |
| `searchTerm` | string | *(empty)* | Optional keyword |
| `maxResults` | integer | 1000 | Stop after this many ads (max 50,000) |
| `proxyConfiguration` | object | HU residential | Jofogas serves Hungarian exits |

### Tips for best results

- **`isBusiness` is the most useful single filter.** Traders and private sellers are different markets on the same page; averaging them together tells you about neither.
- **Use the coordinates, not the region string**, for any mapping — county names are long and inconsistently transliterated.
- **`publishedText` is the audit trail** for `publishedAt`; keep it if you need to justify a date.
- **Take the region slug from the URL**: `jofogas.hu/**budapest**`.
- **Deduplicate on `adId`** when combining scheduled runs; relisted ads keep their id.

### Integrations

Connect the dataset to Make, Zapier, Airbyte, Google Sheets, Slack, GitHub or any HTTP endpoint through Apify integrations, or schedule a run and push results into a warehouse with a webhook.

### API usage

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("logiover/jofogas-hungary-marketplace-scraper").call(run_input={
    "region": "budapest",
    "searchTerm": "telefon",
    "maxResults": 3000,
})
rows = list(client.dataset(run["defaultDatasetId"]).iterate_items())
trade = [r["price"] for r in rows if r["isBusiness"] == "Business" and r["price"]]
priv = [r["price"] for r in rows if r["isBusiness"] == "Private" and r["price"]]
print("business median", sorted(trade)[len(trade) // 2], "private median", sorted(priv)[len(priv) // 2])
```

### Use with AI agents (MCP)

The Actor is callable from the Apify MCP server, so an assistant can pull Hungarian marketplace ads directly and answer pricing and availability questions.

### FAQ

#### Do I need a Jofogas account or API key?

No. This Actor reads the public listing pages; there is nothing to register.

#### How many ads can one run return?

Up to 50,000 per run, thirty-six per page. Pages are fetched several at a time, so a few thousand ads take about a minute.

#### What currency are prices in?

Hungarian forint. Prices arrive as numbers, so no unpicking of formatted text is needed.

#### What does the business flag mean?

Jofogas marks whether an ad was placed by a company or by a private individual, and this Actor carries that through as `Business` or `Private`. It is the cleanest way to separate professional supply from consumer supply.

#### Are the coordinates the exact address?

No. They are the approximate location Jofogas publishes for the ad, accurate to the settlement rather than the doorstep.

#### Does it collect the seller's phone number?

No. Contact details sit behind the individual ad page. Every row carries a `url` to the ad.

#### Which region slugs are available?

Any that appears in a Jofogas URL — `magyarorszag` for the whole country, plus counties such as `budapest`, `pest`, `borsod_abauj_zemplen`.

#### Can I export to CSV or Excel?

Yes — every run's dataset exports to JSON, CSV, Excel, XML or JSONL.

#### How fresh is the data?

Each run reads the marketplace live, so results are as current as Jofogas itself.

#### Why did my run return zero ads?

Almost always a region slug that does not exist, or a keyword with no matches. Clear the keyword and use `magyarorszag` to check.

### Is it legal to scrape Jofogas?

Jofogas is a public marketplace and this Actor reads only its public listing pages — no accounts, no logins. Ad titles, prices and locations are commercial listings published for public view. You remain responsible for how you use the data, including under the GDPR where any of it relates to an identifiable person, and for respecting the marketplace's terms in your own jurisdiction.

### Related scrapers

- **Marktplaats Scraper** — the Netherlands' largest marketplace.
- **Kleinanzeigen Scraper** — German classifieds.
- **Bazos Scraper** — Czech classifieds.
- **Subito Scraper** — Italian classifieds.

***

\*Maintained: last verified 2026-09-01 — checked end-to-end against live run history (reliability, output fields and types, and time/memory budgets).

# Actor input Schema

## `region` (type: `string`):

Region slug exactly as it appears in a Jofogas URL, e.g. magyarorszag for the whole country, budapest, pest, borsod\_abauj\_zemplen.

## `searchTerm` (type: `string`):

Optional keyword, e.g. telefon, auto, butor. Leave empty for every ad in the region.

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

Stop after this many ads. Each page returns 36.

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

Jofogas serves Hungarian exits. A Hungarian residential proxy is used automatically.

## Actor input object example

```json
{
  "region": "magyarorszag",
  "searchTerm": "telefon",
  "maxResults": 1000,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "HU"
  }
}
```

# Actor output Schema

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

Every record collected in this run. Open the Dataset tab to browse, filter or export as JSON, CSV or Excel.

# 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 = {
    "region": "magyarorszag",
    "maxResults": 1000,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "HU"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/jofogas-hungary-marketplace-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 = {
    "region": "magyarorszag",
    "maxResults": 1000,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "HU",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/jofogas-hungary-marketplace-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 '{
  "region": "magyarorszag",
  "maxResults": 1000,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "HU"
  }
}' |
apify call logiover/jofogas-hungary-marketplace-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,logiover/jofogas-hungary-marketplace-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/SMDbdy7Gnt7FAqy3t/builds/mfg2fDR98KJUkhhGo/openapi.json
