Kart.1881 Scraper avatar

Kart.1881 Scraper

Pricing

from $1.49 / 1,000 results

Go to Apify Store
Kart.1881 Scraper

Kart.1881 Scraper

Scrape kart.1881.no, Norway's 1881 map directory. Search companies, people or addresses and get names, addresses, phone numbers, coordinates, websites, emails and social links. Export JSON, CSV, Excel or use the API.

Pricing

from $1.49 / 1,000 results

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Security

Limited permissions

Share

Kart.1881 Scraper

Kart.1881 Scraper extracts companies, people and addresses from kart.1881.no, the map search of Norway's 1881 directory. Search by trade, name, phone number or address and get names, addresses, phone numbers, coordinates, websites, emails and social links as structured data. You don't need a 1881 account, a cookie or an API key.

Run any number of searches across 1881's company, person or address directory and get one clean row per result, with GPS coordinates on the list and website, email, Facebook, Instagram, extra phone numbers and opening hours when you turn on full details.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

Apify Actor: parsebird/kart-1881-scraper. Scrapes kart.1881.no, the map search of Norway's 1881 directory, without login. Call via ApifyClient: client.actor("parsebird/kart-1881-scraper").call(run_input={"searchQueries": ["restaurant"], "searchType": "company", "maxItemsPerQuery": 50, "scrapeFullDetails": true}). Inputs: searchQueries (string[], required: trade, name, phone number, address or place, optionally with a town, one search each), searchType ("company" | "person" | "address", default "company"), maxItemsPerQuery (integer, min 1, default 50), scrapeFullDetails (boolean, default false). Output: dataset rows with name, address, phone (international format with 00 prefix), id, type, lat, lon, query; with scrapeFullDetails also phoneNumber, website, email, facebook, instagram, otherLinks (string[]), contactList ({label,value}[]), openingHours ({day,hours}[]), companiesAtAddress ({name,url}[], address searches), profileUrl. Duplicates across queries are removed. Pricing: pay per result, plus a details event per result opened with scrapeFullDetails. Full API spec: https://apify.com/parsebird/kart-1881-scraper/api. Get your token: https://console.apify.com/settings/integrations.

What is Kart.1881 Scraper?

Kart.1881 Scraper turns 1881 Kart searches into a dataset. Type the same words you would type on the site, pick company, person or address, and click Start. To try it, keep the prefilled restaurant search, which saves 20 Norwegian restaurants with their contact details.

It works as a 1881 API alternative for people who need Norwegian directory data in a spreadsheet or a pipeline rather than one map pin at a time. Download the results as JSON, CSV or Excel, or read them through the Apify API.

What can Kart.1881 Scraper do?

  • 🏢 Search companies. Find businesses by trade, name, phone number or trade plus town, such as frisør trondheim.
  • 👤 Search people. Find listed people by name and get their listed address and phone number.
  • 📍 Search addresses and places. Look up streets, house numbers, postcodes, towns and named places, and see which companies are registered at an address.
  • 📇 Add full details. Get website, email, Facebook, Instagram, other links, extra contact numbers, opening hours and the 1881 profile link.
  • 🧹 Get clean results. Repeated queries and results that appear under several queries are saved and charged once.

Because it runs on Apify, you also get:

What data can you extract from Kart.1881?

FieldDescriptionAvailable
nameCompany, person or place nameAlways
addressAddress, such as Stortingsgata 16, 0161 OsloAlways, when listed
phoneMain phone number, such as 004721507220Always, when listed
id1881 entry IDAlways
typecompany, person or addressAlways
lat, lonGPS coordinatesAlways, when listed
queryThe search query that found this resultAlways
phoneNumberMain phone number from the detailsFull details
websiteMain websiteFull details
emailMain email addressFull details
facebook, instagramSocial profile linksFull details
otherLinksOther links, such as LinkedIn, YouTube or a second websiteFull details
contactListExtra contacts as label and value, such as Mobiltelefon, Telefaks or a named personFull details
openingHoursOpening hours per day, in Norwegian, when the company lists themFull details
companiesAtAddressCompanies registered at the address, with name and 1881 linkFull details, address searches
profileUrlLink to the entry's page on www.1881.noFull details, companies and people

Not every entry lists everything. In one test of 50 restaurants, 41 had a website, 41 had an email and 35 had a Facebook page.

How to scrape Kart.1881 step by step

  1. Open Kart.1881 Scraper and sign in to Apify.
  2. Add your Search queries, such as restaurant bergen, Ola Nordmann or Karl Johans gate 1.
  3. Choose the Search type: Company, Person or Address.
  4. Set Max items per query, the most results to save for each search.
  5. Turn on Scrape full details if you need websites, emails and social links.
  6. Click Start and wait for the run to finish.
  7. Download your Kart.1881 data as JSON, CSV or Excel from the Output tab.

Input parameters

ParameterTypeRequiredDefaultDescription
searchQueriesstring[]Yes—What to search for on 1881. Each query runs on its own.
searchTypestringNocompanycompany, person or address
maxItemsPerQueryintegerNo50Most results to save for each query. Minimum 1.
scrapeFullDetailsbooleanNofalseOpen each result to add contact details. Adds one details event per result.
{
"searchQueries": ["restaurant"],
"searchType": "company",
"maxItemsPerQuery": 50,
"scrapeFullDetails": true
}

Output example

A company with full details:

{
"name": "Restaurant Teatro",
"address": "Stortingsgata 16, 0161 Oslo",
"phone": "004721507220",
"id": "105296483S1",
"type": "company",
"lat": 59.9135551452637,
"lon": 10.7358512878418,
"phoneNumber": "004721507220",
"website": "http://restaurantteatro.no/",
"email": "post@restaurantteatro.no",
"facebook": "https://www.facebook.com/teatrooslo/",
"instagram": "http://www.instagram.com/teatrooslo",
"otherLinks": [],
"contactList": [
{ "label": "Mobiltelefon", "value": "90 22 00 50" },
{ "label": "Eik Teater AS", "value": "90 71 77 43" }
],
"openingHours": [],
"companiesAtAddress": [],
"profileUrl": "https://www.1881.no/restaurant/restaurant-oslo/restaurant-oslo-sentrum/restaurant-teatro_105296483S1/",
"query": "restaurant"
}

An address with full details:

{
"name": "Nygata 3",
"address": "Nygata 3, 0155 Oslo",
"phone": null,
"id": "F1581646",
"type": "address",
"lat": 59.9129784,
"lon": 10.7505545,
"phoneNumber": null,
"website": null,
"email": null,
"facebook": null,
"instagram": null,
"otherLinks": [],
"contactList": [],
"openingHours": [],
"companiesAtAddress": [
{
"name": "Alpha Revisjon AS",
"url": "https://www.1881.no/revisor/revisor-oslo/revisor-oslo-sentrum/alpha-revisjon-as_100503190S2/"
}
],
"profileUrl": null,
"query": "Nygata 3 Oslo"
}

Without full details, rows contain only name, address, phone, id, type, lat, lon and query.

How to use the Kart.1881 API in Python and JavaScript

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("parsebird/kart-1881-scraper").call(run_input={
"searchQueries": ["restaurant bergen", "frisør trondheim"],
"searchType": "company",
"maxItemsPerQuery": 100,
"scrapeFullDetails": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["name"], item["phone"], item.get("email"))

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('parsebird/kart-1881-scraper').call({
searchQueries: ['restaurant bergen', 'frisør trondheim'],
searchType: 'company',
maxItemsPerQuery: 100,
scrapeFullDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => console.log(item.name, item.phone, item.email));

Get your token in Apify Console. See every option on the API tab.

Use cases

  • Lead lists: build lists of Norwegian businesses by trade and town, with phone, email and website.
  • Market research: count and map companies in a trade with their coordinates.
  • Data enrichment: add phone numbers, websites and coordinates to a list of company names.
  • Address checks: confirm that an address exists, get its coordinates and see which companies are registered there.
  • Directory monitoring: schedule a run to spot new or changed entries.

How does Kart.1881 Scraper work?

  1. It runs each search query against the directory you picked.
  2. It moves through the result pages until it reaches your limit or 1881 has no more results.
  3. It skips results it has already saved in this run.
  4. If you turned on full details, it opens each new result and adds its contact data.
  5. It saves each row to your dataset as it goes, so a stopped run keeps its results.

How much does it cost to scrape Kart.1881?

Kart.1881 Scraper uses pay-per-event pricing. Compute and proxy costs are included in the event price.

EventFreeBronzeSilverGold
result-scraped, per 1,000$2.99$2.49$1.99$1.49
details-scraped, per 1,000$0.99$0.99$0.99$0.99

A result event fires for each row saved. A details event fires only when you turn on full details and the result's details open successfully. On the Free tier, 1,000 companies cost $2.99 without details and $3.98 with them. On Gold, the same runs cost $1.49 and $2.48.

Duplicates, unsearchable queries and queries with no results cost nothing. To cap your spending, set a maximum cost per run in the run options. The run stops at that limit and keeps what it saved.

Kart.1881 Scraper only collects data that 1881 shows publicly, without logging in. Web scraping of public data is generally legal, but what you may do with the data depends on your purpose and your country. You can read more in Is web scraping legal?

Person results and many sole-trader listings are personal data. The GDPR applies in Norway through the EEA, so you need a lawful basis to store or use them. Before any direct marketing, also check Norway's marketing rules and the Reservation Register (Reservasjonsregisteret). Check 1881's terms too, and ask a lawyer if you are unsure. This section is not legal advice.

Other scrapers you may like

FAQ

Do I need a 1881 account or an API key? No. The scraper only reads what kart.1881.no shows to any visitor.

How many results can I get per query? As many as 1881 returns for that search. In our tests, restaurant in the company directory returned over 14,000 results, while storgata in the address directory stopped at 76. Address searches return far fewer results than company and person searches.

Why does an address result have no house number? Without full details, 1881 can list a street without its number, such as Storgata, 0155 Oslo. Turn on full details to get the exact address, or include the number in your search.

How can I search within one town? Add the town to the query, such as restaurant bergen. There's no separate location filter.

Why did my query return nothing? Check the run log. 1881 answers text it can't search, such as ..., a single letter, or a word with a long string of nonsense after it, with a fixed list of unrelated entries. The scraper detects this, skips the query, logs a warning and charges nothing. Try a simpler search.

Can I look up a phone number? Yes. Enter the number without spaces, such as 21507220, and choose the matching search type.

Why do some rows have a different phone number in contactList? phone is the main number. contactList holds whatever else the entry lists, such as a mobile number, a fax number or a named contact, and keeps the labels 1881 uses in Norwegian.

Are the opening hours in English? No. Day names stay in Norwegian (Mandag to Søndag) as 1881 shows them.

Can I schedule recurring runs? Yes. Use Apify Schedules to run daily, weekly or at any interval.

Something doesn't work. Where do I report it? Open a ticket on the Issues tab. Include your run link so we can look into it.