# Hitta.se Scraper - Swedish Business Directory (`studio-amba/hitta-se-scraper`) Actor

Search and extract business listings from hitta.se, Sweden's largest business and people directory. Get business names, categories, addresses, postal codes, cities, phone numbers, emails, ratings, and coordinates by trade/category and city. No API key, no login required.

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

## Pricing

from $7.00 / 1,000 result scrapeds

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 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

## Hitta.se Scraper — Swedish Business Directory Data

Scrape business listings from [hitta.se](https://www.hitta.se), Sweden's largest business and people directory. Search by trade/category keyword and city, and export clean structured business records with names, categories, addresses, postal codes, cities, phone numbers, emails, ratings, and coordinates. No login, no cookies, no API key.

### Why use this actor?

hitta.se is the default place Swedes look up a business, a tradesperson, or a phone number — it covers restaurants, craftsmen, shops, clinics, and every other trade searchable by category and place. Every listing carries the data a sales or research team actually needs: what the business does, where it sits, and how to reach it.

Typical uses:

- **Lead generation** — build prospect lists for a trade and city, ready for a CRM import.
- **Local market research** — count businesses per category and region, compare cities and counties.
- **Data enrichment** — match business names to addresses, phone numbers, emails, and coordinates.
- **Competitor analysis** — list every provider in a category around a location.

The actor reads hitta.se's own search-result data directly (the same structured data the site's frontend renders from), so records are complete and consistent. It only returns contact details that businesses publish openly on the directory.

### How to scrape Hitta.se data

1. Open the actor and set a **Search Query (kategori + ort)** — a category/trade keyword and a city together, in Swedish, such as `restaurang stockholm`, `elektriker göteborg`, or `frisör malmö`. A company name also works.
2. Set **Max Results** to the number of businesses you want.
3. Keep the residential proxy prefill and click **Start**.
4. When the run finishes, export the dataset as JSON, CSV, or Excel, or pull it from the Apify API.

hitta.se uses a single combined search box for category + location (there is no separate location field on the site itself), so type both together the way you would on hitta.se. The actor pages through the results automatically (25 listings per page) until it reaches your Max Results or runs out of matching businesses.

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `searchQuery` | String | No | Category/trade keyword and city together, in Swedish (e.g. `restaurang stockholm`, `elektriker göteborg`). Defaults to `restaurang stockholm` if empty. |
| `maxResults` | Integer | No | Maximum number of businesses to return (default: 50, max: 5000). |
| `proxyConfiguration` | Object | No | Proxy settings. Residential proxies recommended for reliable access at scale. |

Example input:

```json
{
    "searchQuery": "restaurang stockholm",
    "maxResults": 100,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
}
```

### Output

One record per business listing:

| Field | Type | Description |
|-------|------|-------------|
| `businessId` | String | Internal hitta.se listing ID |
| `businessName` | String | Business name as listed on hitta.se |
| `category` | String | Primary business category, in Swedish (e.g. `Restaurang, Mat & Dryck`). Not every listing carries a category tag. |
| `street` | String | Street address and number |
| `postalCode` | String | Swedish postal code (postnummer) |
| `city` | String | City/locality |
| `district` | String | City district, when available |
| `county` | String | Swedish county (län) |
| `phone` | String | Phone number, when publicly listed |
| `email` | String | Business email address, when published |
| `website` | String | Business's own website. Only shown on hitta.se for paying/promoted listings, so not every business has one. |
| `rating` | Number | Average customer rating (0–5), when the business has reviews |
| `reviewCount` | Number | Number of customer reviews |
| `latitude` | Number | WGS84 latitude of the business address |
| `longitude` | Number | WGS84 longitude of the business address |
| `url` | String | Full URL of the business detail page on hitta.se |
| `searchQuery` | String | The query that returned this business |
| `scrapedAt` | String | ISO timestamp of the scrape |

Example output (from a real `restaurang stockholm` run):

```json
{
    "businessId": "hnsbbxyf",
    "businessName": "Knut Restaurang & Bar",
    "category": "Restaurang, Mat & Dryck",
    "street": "Upplandsgatan 17",
    "postalCode": "11360",
    "city": "Stockholm",
    "district": "Stockholms Adolf Fredrik",
    "county": "Stockholms län",
    "phone": "08-30 40 57",
    "email": "knut@restaurangknut.se",
    "website": "https://restaurangknut.se/",
    "rating": 3.8,
    "reviewCount": 5,
    "latitude": 59.338161003148244,
    "longitude": 18.052815217994137,
    "url": "https://www.hitta.se/verksamhet/knut-restaurang-och-bar-hnsbbxyf",
    "searchQuery": "restaurang stockholm",
    "scrapedAt": "2026-08-01T19:40:04.183Z"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### Cost estimate

The actor uses lightweight HTTP requests (no browser). Each request returns 25 businesses. A 100-result run typically finishes in under a minute and uses only a few cents of platform credits plus the per-result fee.

### Tips

- Search queries are the same words you would type in hitta.se's own search box — Swedish keywords match best (`snickare`, not `carpenter`).
- Combine category and location in one string: `bageri uppsala`, `advokat linköping`. A bare category (e.g. `restaurang`) searches nationwide.
- Website, rating, and category are only present on a subset of listings — hitta.se only surfaces a website link for paying/promoted businesses, and not every business carries a category tag or has reviews yet. Name, address, city, and phone are present on nearly every record.
- Company names work directly as a search query too, if you already know who you're looking for.

### Limitations

- The actor reads the business-directory search results; it does not fetch individual detail pages, so fields that only live there (full review text, opening hours tables) are not included.
- hitta.se covers Sweden only.
- Category and rating data reflect what businesses have chosen to publish — free listings often carry no category tag, which is a site characteristic, not a scraping gap.

### Legal

This actor only extracts business information that is publicly listed on the hitta.se directory, where businesses publish it precisely to be found and contacted. No login is bypassed and no private data is collected. You are responsible for using the data in compliance with applicable laws (GDPR, competition law) in your jurisdiction.

### Related scrapers

- [Allabolag Scraper](https://apify.com/studio-amba/allabolag-se-scraper) — Swedish company register data (financials, board members) for the same market.
- [Das Telefonbuch Scraper](https://apify.com/studio-amba/telefonbuch-scraper) — the German equivalent business directory.
- [Proff.no Scraper](https://apify.com/studio-amba/proff-no-scraper) — the Norwegian equivalent business/company directory.
- [Hemnet Scraper](https://apify.com/studio-amba/hemnet-scraper) — Sweden's biggest real-estate listings site, for enriching addresses with property data.

### Need this data on a schedule, or a custom version?

We run this scraper as a managed service for businesses: scheduled runs,
deduplication, delta detection, and delivery to your inbox, Google Sheets,
or API — maintenance included. We can also build a custom version with your
exact fields and filters, or combine multiple sources into one feed.

See [studioamba.dev/services](https://studioamba.dev/services/) or email
<hello@studioamba.dev> for a free data sample.
We maintain 300+ European web scrapers and answer within one business day.

# Actor input Schema

## `searchQuery` (type: `string`):

Business category/trade keyword and city together, in Swedish (e.g. 'restaurang stockholm', 'elektriker göteborg', 'frisör malmö'). A company name also works.

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

Maximum number of businesses to return. Results load in pages of 25.

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

Proxy settings. Residential proxies recommended for reliable access at scale.

## Actor input object example

```json
{
  "searchQuery": "restaurang stockholm",
  "maxResults": 25,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "searchQuery": "restaurang stockholm",
    "maxResults": 25,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/hitta-se-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 = {
    "searchQuery": "restaurang stockholm",
    "maxResults": 25,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/hitta-se-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 '{
  "searchQuery": "restaurang stockholm",
  "maxResults": 25,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call studio-amba/hitta-se-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/tFpPT5i2IoB0oQzbW/builds/5Js7PZzrnhYnjBXk9/openapi.json
