# Hitta.se Scraper – Swedish Business Leads, Emails & Org Numbers (`haketa/hitta-se-business-scraper`) Actor

Extract Swedish business leads from Hitta.se by industry and city: company name, phone, email, website, address, GPS, categories, reviews and opening hours — plus firmographics like organization number, revenue, employees and founding date. Export to Excel, CSV or JSON.

- **URL**: https://apify.com/haketa/hitta-se-business-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

<h1 align="center">Hitta.se Business Directory &amp; B2B Lead Scraper 🇸🇪</h1>

<p align="center">
  <img alt="Platform" src="https://img.shields.io/badge/Made%20for-Apify-97D700?style=for-the-badge">
  <img alt="Market" src="https://img.shields.io/badge/Market-Sweden%20%F0%9F%87%B8%F0%9F%87%AA-006AA7?style=for-the-badge">
  <img alt="No code" src="https://img.shields.io/badge/No%20code-required-4C8BF5?style=for-the-badge">
  <img alt="Fields" src="https://img.shields.io/badge/Data%20fields-25%2B-8A2BE2?style=for-the-badge">
  <img alt="Export" src="https://img.shields.io/badge/Export-Excel%20%7C%20CSV%20%7C%20JSON%20%7C%20API-FF7A00?style=for-the-badge">
</p>

<p align="center"><b>Turn Sweden's largest business directory into a clean, structured lead list.</b></p>

This Actor searches **Hitta.se** by industry and city and returns every business it finds — with **phone, email, website, address, GPS coordinates, categories, reviews and opening hours**, plus deep **firmographics**: **organization number (organisationsnummer), legal name, company form, number of employees, annual revenue and founding date**.

Whether you are building a **B2B lead list**, enriching your **CRM**, running **market research** on a Swedish industry, or prospecting for **sales**, this scraper gives you export-ready data in **JSON, CSV or Excel** in minutes — no code required.

---

### ⚡ At a glance

| | |
|---|---|
| 🇸🇪 **Coverage** | Every industry &amp; municipality in Sweden |
| 🏢 **Firmographics** | Org. number, revenue, employees, founding date |
| 📇 **Contact data** | Phone, email, website, social profiles |
| ⭐ **Reputation** | Review score &amp; review count |
| 📍 **Location** | Address, kommun, län &amp; GPS coordinates |
| 🚀 **Speed** | Hundreds of leads per minute, fully automated |
| 💾 **Export** | Excel, CSV, JSON, HTML, RSS or API |
| 🧑‍💻 **No code** | Type a search, click Start, download results |

---

### 📌 Why this Actor?

Most directory scrapers stop at the name and phone number. This one goes further and pulls the **company intelligence that sales, marketing and research teams actually need**:

- 🏢 **Firmographics** — organization number, legal entity name, company form (Aktiebolag, Enskild firma…), employee count, annual revenue and founding year.
- 📇 **Multi-channel contact data** — phone, email, website and social media profiles (Facebook, Instagram, LinkedIn) in a single row.
- ⭐ **Reputation signals** — average review score and review count.
- 📍 **Precise location** — street, ZIP, city, municipality (kommun), county (län) and latitude/longitude.
- 🕐 **Opening hours** — full weekly schedule where available.

The result is a **ready-to-use prospecting file** for the Swedish market — not just a phone book dump.

---

### ✨ What you get (data fields)

> **Coverage key:**  🟢 filled for almost every business · 🟡 filled when the business has published it · ⚪ occasional / niche field

#### 🏢 Company &amp; firmographics

| Field | Description | Coverage |
|-------|-------------|:--------:|
| `name` | Business / company name | 🟢 |
| `organizationNumber` | Swedish organisationsnummer (e.g. `556243-9736`) | 🟢 |
| `legalName` | Registered legal entity name | 🟢 |
| `businessType` | Company form (Aktiebolag, Handelsbolag, Enskild firma…) | 🟢 |
| `categories` | Industry / business categories | 🟢 |
| `numberOfEmployees` | Employee count | 🟡 |
| `annualRevenue` | Annual revenue (thousands of SEK) | 🟢 |
| `foundingDate` | Date the company was founded | 🟢 |

#### 📇 Contact &amp; web

| Field | Description | Coverage |
|-------|-------------|:--------:|
| `primaryPhone` | Main phone number | 🟢 |
| `phones` | All listed phone numbers (with labels) | 🟢 |
| `email` | Contact email address | 🟢 |
| `website` | Company website URL | 🟡 |
| `socialLinks` | Facebook / Instagram / other social profiles | 🟡 |

#### 📍 Location

| Field | Description | Coverage |
|-------|-------------|:--------:|
| `street` | Street address | 🟢 |
| `zipCode` | Postal code | 🟢 |
| `city` | City / locality | 🟢 |
| `municipality` | Kommun (municipality) | 🟢 |
| `county` | Län (county) | 🟢 |
| `latitude` / `longitude` | GPS coordinates | 🟢 |

#### ⭐ Reputation &amp; extras

| Field | Description | Coverage |
|-------|-------------|:--------:|
| `reviewScore` | Average review rating | 🟡 |
| `reviewCount` | Number of reviews | 🟡 |
| `openingHours` | Weekly opening hours | 🟡 |
| `payingCustomer` | Whether the business is a premium listing | 🟢 |
| `numberOfVehicles` | Company-registered vehicles, when available | ⚪ |
| `profileUrl` | Link to the company page | 🟢 |
| `scrapedAt` | Timestamp of collection | 🟢 |

> Field coverage varies by business. Core fields such as name, city, coordinates and organization number are filled for the vast majority of records; email, website and revenue depend on what each company has published.

---

### 🚀 Quick start

1. Click **Try for free / Start**.
2. In **Search terms**, type what you are looking for and where — one search per line, exactly as you would in the Hitta.se search box:
````

restaurang stockholm
bilverkstad göteborg
frisör malmö

````
3. *(Optional)* Set **Max results per search** to keep runs fast, e.g. `100`.
4. Click **Save &amp; Start**.
5. When the run finishes, open the **Dataset** tab and export to **Excel, CSV, JSON or API**.

> 💡 **Tip:** Leave everything blank and hit Start to get an instant **sample of Swedish businesses** so you can see the output format first.

---

### 🔍 How search works

Hitta.se uses a single search box that combines **what** you want with **where** you want it. This Actor works the same way — each line in **Search terms** is one search combining an industry/keyword with a location.

**Great search examples:**

| Goal | Search term |
|------|-------------|
| 🍽️ Restaurants in Stockholm | `restaurang stockholm` |
| 🔧 Car workshops in Gothenburg | `bilverkstad göteborg` |
| ✂️ Hair salons in Malmö | `frisör malmö` |
| 📊 Accountants in Uppsala | `redovisningsbyrå uppsala` |
| 🦷 Dentists in Lund | `tandläkare lund` |
| 🏗️ Construction firms in Sweden | `byggföretag` |
| ⚖️ Law firms in Stockholm | `advokat stockholm` |
| 🚿 Plumbers in Västerås | `rörmokare västerås` |
| ☕ Cafés in Gothenburg | `café göteborg` |
| 🏠 Real estate agents in Malmö | `mäklare malmö` |

You can add as many search terms as you like — the Actor runs them all and merges the results into one **deduplicated** dataset.

> 🇸🇪 **Tip:** Search in Swedish for the best coverage (e.g. `frisör` instead of *hairdresser*, `bilverkstad` instead of *car repair*). Swedish characters (å, ä, ö) are fully supported.

---

### 🎯 Use cases

| Use case | What it delivers |
|----------|------------------|
| 💼 **B2B lead generation** | Targeted prospect lists for any Swedish industry &amp; region, with phone, email, website and — where published — organization number and revenue to prioritise the accounts worth calling. |
| 📞 **Sales prospecting &amp; territory planning** | Search a city or county, sort by review score or employee count, and hand reps a clean call list with GPS coordinates for route planning. |
| 🔄 **CRM &amp; data enrichment** | Already have a company list? Use **Start URLs** to scrape specific pages and enrich your CRM with organization numbers, revenue, employee counts and social profiles. |
| 📈 **Market &amp; competitor research** | Map an entire industry in a city — count competitors, analyse review scores, spot the biggest players by revenue and employees, and see how a market spreads across municipalities. |
| 🧑‍💼 **Recruitment &amp; talent sourcing** | Find employers in a specific trade and location, complete with company size and contact details, for outreach and business development. |
| 🔎 **Local SEO &amp; directory audits** | Pull how businesses appear in the directory — categories, contact details and opening hours — to audit listings and find gaps. |

---

### ⚙️ Input reference

| Input | Type | Default | Description |
|-------|------|---------|-------------|
| **Search terms** | list | *sample* | One search per line, combining industry + location (`restaurang stockholm`). Leave blank for an automatic sample. |
| **Start URLs** | list | — | Optional. Paste Hitta.se search-result pages or individual company pages to scrape them directly. |
| **Max results per search** | number | `0` | Cap on businesses collected per search term. `0` = unlimited (all pages). |
| **Include full company details** | boolean | `true` | When on, adds website, organization number, revenue, employees, founding date, social links and opening hours. Turn off for a faster, lighter list. |
| **Proxy configuration** | object | Datacenter | Proxy settings. The default is more than enough. |
| **Max concurrent requests** | number | `6` | How many pages to fetch in parallel (4–8 recommended). |

#### 📥 Example input

```json
{
"searchTerms": [
 "restaurang stockholm",
 "bilverkstad göteborg",
 "frisör malmö"
],
"maxResultsPerSearch": 100,
"scrapeDetailPage": true,
"maxConcurrency": 6
}
````

<details>
<summary><b>🔧 Scrape specific companies (enrichment)</b></summary>

```json
{
  "startUrls": [
    "https://www.hitta.se/verksamhet/some-company-id",
    "https://www.hitta.se/verksamhet/another-company-id"
  ],
  "scrapeDetailPage": true
}
```

</details>

<details>
<summary><b>🔧 Scrape an exact search you built on the website</b></summary>

```json
{
  "startUrls": [
    "https://www.hitta.se/sök?vad=advokat%20stockholm&typ=ftg"
  ],
  "maxResultsPerSearch": 200
}
```

</details>

***

### 📤 Example output

```json
{
  "name": "Flying Alex AB",
  "organizationNumber": "559470-9841",
  "legalName": "flying alex ab",
  "businessType": "Aktiebolag",
  "categories": ["Skönhetsbehandlingar", "Frisörer"],
  "primaryPhone": "076-312 96 06",
  "phones": [
    { "label": "Frisör Alexandra", "number": "076-312 96 06", "tel": "+46763129606" }
  ],
  "email": "kontakt@example.se",
  "website": "https://example.se/",
  "street": "Tegelgårdsgatan 10",
  "zipCode": "21133",
  "city": "Malmö",
  "municipality": "Malmö",
  "county": "Skåne län",
  "latitude": 55.60452979049758,
  "longitude": 12.996805516968314,
  "numberOfEmployees": 4,
  "annualRevenue": 491,
  "revenueCurrency": "SEK",
  "foundingDate": "2024-02-05",
  "reviewScore": 4.8,
  "reviewCount": 23,
  "socialLinks": [
    "https://www.facebook.com/example/",
    "https://www.instagram.com/example/"
  ],
  "openingHours": [
    { "day": "Monday", "opens": "09:00", "closes": "18:00" }
  ],
  "payingCustomer": true,
  "numberOfVehicles": null,
  "profileUrl": "https://www.hitta.se/verksamhet/mpssxfiak",
  "scrapedAt": "2026-07-23T19:15:38.543Z"
}
```

***

### 💡 Tips & best practices

- ✅ **Search in Swedish.** The directory is Swedish, so Swedish keywords return far more results.
- ✅ **Be specific with location.** `restaurang stockholm` is more useful than a nationwide `restaurang` when you want a local list.
- ✅ **Combine many searches in one run.** Add a dozen city/industry combinations and let the Actor merge and deduplicate them for you.
- ✅ **Use `Max results per search`** to control cost and speed. A broad search can contain thousands of businesses.
- ✅ **Turn off full details** when you only need a quick name + phone + address list — it runs faster and lighter.
- ✅ **Export straight to your tools.** Download CSV/Excel, or connect the dataset to Google Sheets, Make, Zapier or the Apify API.

***

### ❓ FAQ

**Which businesses are covered?**
Any business listed in the Swedish directory — across every industry and municipality in Sweden.

**Do I need to know how to code?**
No. Fill in the search terms, click Start, and export the results. The API is available if you want to automate it.

**Can I get the organization number (organisationsnummer)?**
Yes — when the business page publishes it, it is returned in the `organizationNumber` field, formatted as `NNNNNN-NNNN`.

**Can I scrape a search I already built on the website?**
Yes. Copy the URL from your browser and paste it into **Start URLs**.

**How many results can I get?**
As many as the directory returns for your searches. Set **Max results per search** to `0` for unlimited, or a number to cap each search.

**In what format is the data?**
Structured JSON by default, exportable to **CSV, Excel, HTML table, RSS or via API**.

**How fresh is the data?**
Every run fetches live data at the moment it runs, so the results reflect the current listings.

***

### 📊 Output & integrations

Results are stored in a standard Apify dataset. You can:

- 👀 Preview them in a clean **table view** in the Console.
- 💾 Export to **JSON, CSV, Excel, HTML, or RSS**.
- 🔌 Pull them programmatically via the **Apify API**.
- 🔗 Push them to **Google Sheets, Make, Zapier, Airbyte** and more.

***

### ⚖️ Legal & responsible use

This Actor collects **publicly available business information** for legitimate purposes such as lead generation, market research and data enrichment.

- Use the data in compliance with **GDPR**, the **ePrivacy Directive** and any other applicable laws and regulations, including rules on **B2B marketing and electronic communications**.
- Business contact data still requires a lawful basis for processing and outreach — ensure you have one and honour opt-out requests.
- Respect the source website's terms of service and use the data responsibly.
- This Actor is intended for **business-to-business** data and lawful use cases only. You are responsible for how you use the collected data.

If you have questions about a specific use case, consult your legal counsel before running large-scale collection or outreach.

***

### 🛟 Support

Found a bug, need an extra field, or want a tweak to the output? **Open an issue** on the Actor's Issues tab — feedback is welcome and helps improve the Actor.

<p align="center"><b>Happy prospecting! 🇸🇪</b></p>

# Actor input Schema

## `searchTerms` (type: `array`):

One search per line, combining the industry or business type with a city or area — exactly as you would type it into the Hitta.se search box. Examples: 'restaurang stockholm', 'bilverkstad göteborg', 'frisör malmö', 'redovisningsbyrå uppsala'. Leave blank to get an automatic sample.

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

Optional. Paste Hitta.se URLs directly — either search result pages or individual company pages (…/verksamhet/…). Handy when you have already built a search on the website and want to scrape exactly those results.

## `maxResultsPerSearch` (type: `integer`):

Maximum number of businesses to collect per search term. Set to 0 for unlimited (collects every result page). A broad search like 'restaurang stockholm' can return several thousand businesses.

## `scrapeDetailPage` (type: `boolean`):

When on, each company's profile page is opened to add website, organization number, legal name, company form, number of employees, annual revenue, founding date, social media profiles and opening hours. Turn off for a faster, lighter list (name, phone, email, address, category, reviews).

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

Proxy settings for reliable data collection. Datacenter proxies (the default) are more than enough for this Actor.

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

How many pages are fetched in parallel. Higher values finish large runs faster. Recommended: 4–8.

## Actor input object example

```json
{
  "searchTerms": [
    "restaurang stockholm",
    "tandläkare uppsala"
  ],
  "startUrls": [],
  "maxResultsPerSearch": 100,
  "scrapeDetailPage": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "maxConcurrency": 6
}
```

# Actor output Schema

## `datasetItems` (type: `string`):

Download every business collected in this run (JSON, CSV, Excel).

## `runUrl` (type: `string`):

Open this run in the Apify Console.

## `name` (type: `string`):

Business display name

## `organizationNumber` (type: `string`):

Swedish organisationsnummer (e.g. 556243-9736)

## `legalName` (type: `string`):

Registered legal entity name

## `businessType` (type: `string`):

Legal form (Aktiebolag, Enskild firma, etc.)

## `categories` (type: `string`):

Business categories / industries

## `primaryPhone` (type: `string`):

Primary phone number

## `email` (type: `string`):

Contact email address

## `website` (type: `string`):

Company website URL

## `street` (type: `string`):

Street address

## `zipCode` (type: `string`):

Postal code

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

City / locality

## `municipality` (type: `string`):

Kommun (municipality)

## `county` (type: `string`):

Län (county)

## `latitude` (type: `string`):

GPS latitude

## `longitude` (type: `string`):

GPS longitude

## `numberOfEmployees` (type: `string`):

Number of employees

## `annualRevenue` (type: `string`):

Annual revenue in thousands of SEK

## `foundingDate` (type: `string`):

Founding date

## `reviewScore` (type: `string`):

Average review rating

## `reviewCount` (type: `string`):

Number of reviews

## `socialLinks` (type: `string`):

Facebook / Instagram / other social profiles

## `openingHours` (type: `string`):

Weekly opening hours

## `payingCustomer` (type: `string`):

Whether the business is a paying Hitta.se customer

## `numberOfVehicles` (type: `string`):

Number of company-registered vehicles, when available

## `profileUrl` (type: `string`):

Hitta.se company page

## `scrapedAt` (type: `string`):

ISO 8601 timestamp

# 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 = {
    "searchTerms": [
        "restaurang stockholm",
        "bilverkstad göteborg"
    ],
    "startUrls": [],
    "maxResultsPerSearch": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/hitta-se-business-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 = {
    "searchTerms": [
        "restaurang stockholm",
        "bilverkstad göteborg",
    ],
    "startUrls": [],
    "maxResultsPerSearch": 100,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/hitta-se-business-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "restaurang stockholm",
    "bilverkstad göteborg"
  ],
  "startUrls": [],
  "maxResultsPerSearch": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call haketa/hitta-se-business-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=haketa/hitta-se-business-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Hitta.se Scraper – Swedish Business Leads, Emails & Org Numbers",
        "description": "Extract Swedish business leads from Hitta.se by industry and city: company name, phone, email, website, address, GPS, categories, reviews and opening hours — plus firmographics like organization number, revenue, employees and founding date. Export to Excel, CSV or JSON.",
        "version": "1.0",
        "x-build-id": "N1fF2OiWArNVKLfeS"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/haketa~hitta-se-business-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-haketa-hitta-se-business-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/haketa~hitta-se-business-scraper/runs": {
            "post": {
                "operationId": "runs-sync-haketa-hitta-se-business-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/haketa~hitta-se-business-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-haketa-hitta-se-business-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchTerms": {
                        "title": "Search terms (what + where)",
                        "type": "array",
                        "description": "One search per line, combining the industry or business type with a city or area — exactly as you would type it into the Hitta.se search box. Examples: 'restaurang stockholm', 'bilverkstad göteborg', 'frisör malmö', 'redovisningsbyrå uppsala'. Leave blank to get an automatic sample.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Start URLs (advanced)",
                        "type": "array",
                        "description": "Optional. Paste Hitta.se URLs directly — either search result pages or individual company pages (…/verksamhet/…). Handy when you have already built a search on the website and want to scrape exactly those results.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResultsPerSearch": {
                        "title": "Max results per search",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of businesses to collect per search term. Set to 0 for unlimited (collects every result page). A broad search like 'restaurang stockholm' can return several thousand businesses.",
                        "default": 0
                    },
                    "scrapeDetailPage": {
                        "title": "Include full company details",
                        "type": "boolean",
                        "description": "When on, each company's profile page is opened to add website, organization number, legal name, company form, number of employees, annual revenue, founding date, social media profiles and opening hours. Turn off for a faster, lighter list (name, phone, email, address, category, reviews).",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings for reliable data collection. Datacenter proxies (the default) are more than enough for this Actor.",
                        "default": {
                            "useApifyProxy": true
                        }
                    },
                    "maxConcurrency": {
                        "title": "Max concurrent requests",
                        "minimum": 1,
                        "maximum": 12,
                        "type": "integer",
                        "description": "How many pages are fetched in parallel. Higher values finish large runs faster. Recommended: 4–8.",
                        "default": 6
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
