# Tori.fi Finland Classifieds Scraper (`parseforge/tori-finland-scraper`) Actor

Scrapes Tori.fi for-sale listings by search keyword and returns each one as a flat row with price, location, seller type, condition, and photo URLs. No login required.

- **URL**: https://apify.com/parseforge/tori-finland-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Developer tools, Automation, E-commerce
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.69 / 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

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### Tori.fi Finland Classifieds Scraper

**Scrape for-sale listings from Tori.fi, Finland's largest classifieds marketplace, by any search keyword.** Every listing returns its title, price in euros, location, seller type, condition, and direct photo URLs. Export to CSV, JSON, Excel, or XML.

Tori.fi hosts millions of second-hand goods, vehicles, and real estate listings across Finland, but browsing manually or building your own scraper takes time. This Actor reads the public for-sale feeds directly, so you can collect exactly the listings that match your search term, sorted the way you want, without writing a single line of code. It works the same way the Tori.fi website renders data in a browser, returning structured results you can export immediately.

| Who uses it | What they scrape Tori.fi for |
|---|---|
| Second-hand goods resellers | Monitor newly listed items for a specific product category to spot undervalued inventory before competitors. |
| Market researchers | Track asking prices and supply volume for a product segment across Finland over time. |
| Consumers moving to Finland | Furnish a new home by pulling all listings for sohva, sänky, or pöytä in one batch. |
| Data journalists | Analyze regional listing patterns, seller behavior, or price trends in the Finnish recommerce market. |

### What it does

This Actor collects Tori.fi classifieds listings by free-text search keyword and returns each one as a flat row with price, location, seller type, and photo URLs.

- 🔍 **Free-text search:** type any Finnish keyword like sohva, iphone, or polkupyörä and get matching for-sale listings.
- 📊 **Flexible sorting:** order results by newest first, cheapest first, or leave the default relevance ranking.
- 📸 **Photo URLs included:** every listing row carries direct links to its gallery images for downstream processing.
- 🇫🇮 **Finnish marketplace focus:** built for Tori.fi's specific data structure, including seller type, condition, and euro pricing.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with Tori.fi data

**🛋️ Furnish a home in Finland.**

A newcomer searches sohva, sänky, and ruokapöytä, collects 200 listings, and filters by location and price to furnish an apartment in one afternoon.

**📈 Track second-hand market prices.**

A reseller runs a weekly scrape for iPhone and MacBook, plots average asking prices over time, and decides when to list their own stock.

**🚗 Monitor vehicle listings.**

A car buyer searches for a specific make and model, sorts by newest, and checks every morning for fresh deals before they sell.

**📍 Compare regional supply.**

A researcher pulls the same search term across multiple runs, maps listing density by city, and reports on regional availability of rental apartments.

### Why choose this scraper

| | What you get |
|---|---|
| **No API key needed** | Reads the same public data the Tori.fi website renders, no registration required. |
| **Structured output** | Every listing lands in a fixed schema ready for spreadsheets, databases, or dashboards. |
| **Scale on demand** | Collect up to a million listings per run, from a handful for a quick check to a full market sweep. |

### How it compares

This Actor covers the full Tori.fi for-sale marketplace by keyword, while the competitors below focus on specific listing types or categories.

| Feature | ParseForge | Tori.fi Marketplace Scraper (Finland) | Tori Scraper - Finnish Car Listings & Classifieds |
|---|---|---|---|
| Free-text keyword search | Yes | Yes | Not listed |
| Seller type (private/dealer) | Yes | Yes | Not listed |
| Item condition field | Yes | Yes | Not listed |
| Photo URLs in output | Yes | Yes | Not listed |
| Vehicle specs (mileage, fuel type) | Not listed | Not listed | Yes |
| Sort by newest or cheapest | Yes | Not listed | Not listed |

### Configure the run

Drive the Actor with a single search keyword and an optional sort order, then set a hard cap on the number of listings collected per run. The Input tab lists every parameter.

A first run with the defaults:

```json
{
 "query": "sohva",
 "maxItems": 10
}
```

A larger pull:

```json
{
 "query": "sohva",
 "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.0085 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $0.85 |
| 1,000 results | $8.50 |
| 10,000 results | $85.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [Tori.fi Finland Classifieds Scraper](https://apify.com/parseforge/tori-finland-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to Tori.fi through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/tori-finland-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results for my search term?**

Check that your keyword matches how items are listed on Tori.fi. Try a broader or more common Finnish term. Also verify that the sort code, if you supplied one, is spelled exactly as Tori.fi expects it, such as PUBLISHED\_DESC.

**The run stops before reaching my maxItems limit.**

This usually means Tori.fi returned all matching listings and there are no more pages to read. Try a broader search term or remove the sort filter to see if more results appear.

**Some listings are missing photos even though I can see them on the website.**

The Actor captures the photo URLs that are present in the listing card on the search results page. If a seller uploaded images after the listing was indexed, or if Tori.fi lazy-loads them, a small number may be missed. Re-running the scrape a few minutes later often resolves this.

**I get blocked or see error responses from Tori.fi.**

The Actor runs on Apify's infrastructure with rotating proxies. If you are running at very high volumes, try reducing the maxItems per run and spreading the work across multiple scheduled runs with a delay between them.

**The price field is empty for some listings.**

Some Tori.fi listings are marked as negotiable or free and do not carry a numeric price. The Actor returns whatever value the listing card displays. Check the listing URL directly to confirm how the seller priced it.

### FAQ

| Question | Answer |
|---|---|
| Do I need a Tori.fi account or API key to use this scraper? | No. The Actor reads the public listing pages that anyone can visit in a browser. No login, no API registration, and no OAuth flow is required. |
| What data fields does each listing row contain? | Every row includes the listing title, price in euros, location, seller type (private or dealer), item condition, a short description, and direct URLs to the listing's photos. The exact field list is shown in the sample output on this page. |
| Can I scrape listings from a specific category instead of a keyword? | The Actor is driven by a free-text search term. To target a category, use the keyword that best describes it, such as huonekalut for furniture or autot for cars, which is how most users browse Tori.fi. |
| How many listings can I collect in one run? | You set the maximum with the maxItems field. The hard cap is one million listings per run, so you can collect anything from a quick sample to a full market dataset. |
| Does this scraper handle Tori.fi's pagination automatically? | Yes. The Actor follows the next-page links on Tori.fi until it reaches your maxItems limit or runs out of matching listings. |
| Can I sort results by newest or cheapest? | Yes. Use the sort field with codes like PUBLISHED\_DESC for newest first or PRICE\_ASC for cheapest first. Leave it empty for Tori.fi's default relevance order. |
| Is this scraper legal to use on Tori.fi? | The Actor only reads publicly accessible web pages. You are responsible for complying with Tori.fi's terms of service and Finnish data protection laws in how you use the collected data. |
| What export formats are supported? | You can export your dataset to CSV, JSON, Excel, or XML directly from the Apify platform run results. |
| Can I schedule this scraper to run daily or weekly? | Yes. Apify's scheduler lets you set the Actor to run on a cron schedule, so you can monitor new listings automatically without manual intervention. |
| Does the scraper return listings from all of Finland or can I filter by city? | The search runs across all of Finland. To focus on a city, include the city name in your search keyword, for example sohva Helsinki or auto Tampere. |
| What is the difference between this Actor and the Tori.fi car-specific scrapers? | This Actor searches the entire for-sale marketplace by keyword. If you only need vehicle listings with structured specs like mileage and fuel type, a dedicated car scraper may return those extra fields. This Actor is for general classifieds across all categories. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Schibsted Suomi Oy. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

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

Keyword to search on Tori.fi, for example sohva, iphone, polkupyörä. Leave empty to browse the newest for-sale listings.

## `sort` (type: `string`):

Optional sort order code as used by Tori.fi (for example PUBLISHED\_DESC for newest, PRICE\_ASC for cheapest). Leave empty for the default relevance order.

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

How many listings to collect per run.

## Actor input object example

```json
{
  "query": "sohva",
  "maxItems": 10
}
```

# 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 = {
    "query": "sohva",
    "sort": "",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/tori-finland-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 = {
    "query": "sohva",
    "sort": "",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/tori-finland-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 '{
  "query": "sohva",
  "sort": "",
  "maxItems": 10
}' |
apify call parseforge/tori-finland-scraper --silent --output-dataset

```

## MCP server setup

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