Discover/Krak API
live

Krak APIkrak.dk

Search Danish companies and persons, retrieve contact details, geocoordinates, and look up phone number spam reports via the Krak.dk API.

Endpoint health
verified 5d ago
search_persons
get_who_called_overview
who_called
suggestions
search_companies
7/7 passing latest checkself-healing
Endpoints
7
Updated
26d ago

What is the Krak API?

The Krak.dk API provides 7 endpoints for querying Denmark's business and person directory, covering company search, person lookup, and phone number identification. The search_companies endpoint returns paginated results with name, address, and phone for any keyword or company name, while get_company_details adds email, website, geocoordinates, and business categories for a specific company.

Try it
Page number for pagination
Search keyword or company name
api.parse.bot/scraper/4733bf1e-bda6-46ca-82c0-5999ca676665/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/4733bf1e-bda6-46ca-82c0-5999ca676665/search_companies?page=1&query=restaurant' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace krak-dk-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: Krak.dk SDK — Danish directory search, company details, phone lookup."""
from parse_apis.krak_dk_api import Krak, NotFound

client = Krak()

# Search for companies and print basic info
for company in client.companysummaries.search(query="restaurant", limit=3):
    print(company.name, company.id, company.url)

# Drill into the first result for full details
hit = client.companysummaries.search(query="restaurant", limit=1).first()
if hit:
    detail = hit.details()
    print(detail.name, detail.address, detail.phone, detail.email)

# Search persons
person_hit = client.personsummaries.search(query="Jensen", limit=1).first()
if person_hit:
    person = person_hit.details()
    print(person.name, person.address, person.latitude, person.longitude)

# Phone number lookup with error handling
try:
    lookup = client.phonelookups.get(phone="70200000")
    print(lookup.phone, lookup.statistics.searches_total, lookup.statistics.searches_this_week)
except NotFound as exc:
    print(f"Phone not found: {exc}")

# Get autocomplete suggestions
for suggestion in client.suggestions.search(query="tand", limit=5):
    print(suggestion.text, suggestion.search_type)

# Who-called overview: most searched numbers
overview = client.whocalledoverviews.get()
for entry in overview.most_searched[:3]:
    print(entry.phone, entry.count)

print("exercised: companysummaries.search / details / personsummaries.search / details / phonelookups.get / suggestions.search / whocalledoverviews.get")
All endpoints · 7 totalmissing one? ·

Full-text search for companies/businesses by name or keyword on krak.dk. Returns paginated results (25 per page) with basic info: name, ID, slug, URL, address, and phone. Address and phone may be empty for some listings. Use get_company_details with the returned id and slug for full information.

Input
ParamTypeDescription
pageintegerPage number for pagination
queryrequiredstringSearch keyword or company name
Response
{
  "type": "object",
  "fields": {
    "page": "integer, current page number",
    "query": "string, the search query used",
    "results": "array of company objects with keys: name, id, slug, url, address, phone"
  },
  "sample": {
    "data": {
      "page": 1,
      "query": "restaurant",
      "results": [
        {
          "id": "65949783",
          "url": "https://www.krak.dk/restaurant+oliva+hornb%c3%a6k/65949783/firma",
          "name": "Restaurant Oliva",
          "slug": "restaurant+oliva+hornb%c3%a6k",
          "phone": "",
          "address": ""
        }
      ]
    },
    "status": "success"
  }
}

About the Krak API

Company and Person Search

The search_companies endpoint accepts a query string and an optional page integer, returning an array of company objects with name, id, slug, url, address, and phone. The id and slug fields from these results are the required inputs for get_company_details, which expands the record to include email, website, latitude, longitude, and a categories array. The search_persons endpoint follows the same pattern: query by name, paginate with page, and pass the returned id and slug to get_person_details for full address and geographic coordinates.

Phone Number Lookup

The who_called endpoint accepts a Danish phone number string (e.g. '70200000') and returns a statistics object containing searches_this_week and searches_total counts, plus a reports array of user-submitted descriptions such as spam or telemarketing flags. The get_who_called_overview endpoint requires no inputs and returns two lists: most_searched (each entry has phone and count) and recently_searched (each entry has phone and time). These endpoints correspond to Krak.dk's "Hvem Ringede" (Who Called) feature.

Autocomplete and Suggestions

The suggestions endpoint takes a query string and returns autocomplete candidates. Each result includes name, text, url, searchType (e.g. 'companies'), suggestType, and a geo field for geographic context. This is useful for building type-ahead search interfaces or normalizing input before passing it to the main search endpoints.

Reliability & maintenanceVerified

The Krak API is a managed, monitored endpoint for krak.dk — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when krak.dk changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official krak.dk API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
5d ago
Latest check
7/7 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Building a Danish business directory app with address, phone, and category data from get_company_details
  • Identifying unknown callers by looking up search counts and spam reports via who_called
  • Geocoding Danish company locations using latitude and longitude fields from company detail responses
  • Monitoring trending phone numbers in Denmark using get_who_called_overview most-searched data
  • Implementing autocomplete for Danish business or person name search using the suggestions endpoint
  • Aggregating contact details (email, website, phone) for Danish SMBs to support sales prospecting
  • Cross-referencing person addresses and phone numbers for data enrichment pipelines targeting Denmark
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Krak.dk have an official developer API?+
Krak.dk does not publish a public developer API or documented integration program for third-party use.
What does `get_company_details` return beyond what the search results include?+
search_companies returns basic fields: name, id, slug, url, address, and phone. get_company_details adds email, website, latitude, longitude, and a categories array. It requires both id and slug from the search response.
Does the `who_called` endpoint return the identity or name of the caller?+
No — who_called returns statistics (weekly and total search counts) and a reports array of user-submitted text descriptions. It does not resolve the phone number to a named person or company record. You can fork this API on Parse and revise it to add a lookup that cross-references the phone against search_companies or search_persons results.
Is company opening hours data available?+
Opening hours are not currently returned in the get_company_details response fields. The endpoint covers contact info, geocoordinates, and categories. You can fork this API on Parse and revise it to add opening hours if that field is present on the source page.
How does pagination work across search endpoints?+
Both search_companies and search_persons accept an optional page integer. The response echoes back the current page number alongside the results array. There is no total_pages or total_results field in the response, so you iterate by incrementing page until the results array is empty.
Page content last updated . Spec covers 7 endpoints from krak.dk.
Related APIs in B2b DirectorySee all →
infobel.com API
Search and retrieve business and person contact information from Infobel directories across the globe to find phone numbers, addresses, and other details. Quickly locate companies or individuals by name to build targeted contact lists or verify business information worldwide.
11880.com API
Search and discover millions of German businesses from 11880.com's comprehensive directory, instantly accessing company contact details, locations, and trade information. Get intelligent autocomplete suggestions for trades and cities to refine your business searches and find exactly who you're looking for.
drimble.nl API
Search and access detailed business information from Drimble.nl, including company addresses, SBI classifications, and activity descriptions. Find specific companies or browse listings to get comprehensive details about Dutch businesses.
dba.dk API
Search and retrieve detailed listings from Denmark's largest marketplace DBA.dk, including product information, pricing, and seller details across general goods and car categories. Browse marketplace categories, find specific items, and access comprehensive data on both regular listings and automotive inventory.
yandex.ru API
Search for businesses on Yandex Maps and instantly access their names, addresses, phone numbers, websites, social media links, hours of operation, and categories. Get detailed company information to find local services, verify business details, or build comprehensive business directories.
regnskapstall.no API
Search Norwegian companies and retrieve their financial statements, ownership details, roles, competitors, and regulatory announcements all in one place. Get comprehensive company overviews including registration data and financial metrics to research businesses and track new market entries.
yellowpages-uae.com API
Search and discover UAE businesses with instant access to contact details, locations, and branch information from the Yellow Pages UAE directory. Find companies by name, get detailed business profiles, explore multiple branches, and browse available cities all in one place.
local.ch API
Search Swiss businesses and retrieve their contact details, addresses, phone numbers, opening hours, and website URLs directly from the local.ch directory. Look up companies by name, category, or location, and perform reverse phone number lookups.
Krak API – Danish Business & Person Directory · Parse