AI Search API
The AI search uses metadata from Data.norge.no and helps you find datasets, APIs, concepts, information models, services and events using artificial intelligence. The service that is responsible for handling AI searches is fdk-llm-search-service(Github).
Important: This API is built for internal use by Data.norge.no and may change over time. We do not recommend using it if you depend on stability and consistency.
Endpoints to different environments
- Production environment: https://aisearch.api.fellesdatakatalog.digdir.no
- Demo environment: https://aisearch.api.demo.fellesdatakatalog.digdir.no
Documentation
OpenAPI-specification for the AI search endpoint (Swagger)
How to gain access
The API is open for public use and requires no authentication. You can start using the endpoint immediately.
Rate limiting
The API has rate limiting configured to ensure stable operation. The limits are:
- 10 requests per minute (requests per minute)
- Burst limit of 20 requests (2x multiplier)
If you exceed these limits, you will receive an HTTP 429 (Too Many Requests) response.
Design queries
The AI search allows you to ask questions in natural language. In the example below, we have asked "Which areas in Norway are protected?". The AI search will interpret the question and find relevant resources based on metadata. Without the type field, the search is limited to datasets.
query must be between 3 and 255 characters. Shorter or longer queries return HTTP 400.
Typical response time is around 5 seconds. The embedding search is capped at about 10 candidates; the LLM filter usually returns fewer hits.
curl -X POST 'https://aisearch.api.demo.fellesdatakatalog.digdir.no/llm' \ -H 'Content-Type: application/json' \ -d '{"query":"Which areas in Norway are protected?"}'
Natural language
Unlike standard search, you can use natural language in AI search. You don't need to know specific resource names, technical terms, or formats.
The service is primarily adapted for Norwegian. The metadata summaries searched against are in Norwegian, and explanations in the response are given in Norwegian. English questions may work, but the response text will still be in Norwegian.
Examples of questions:
- "Which datasets are about environmental protection?"
- "Find concepts about sick leave"
- "Show me APIs about road traffic in Oslo"
curl -X POST 'https://aisearch.api.demo.fellesdatakatalog.digdir.no/llm' \ -H 'Content-Type: application/json' \ -d '{"query":"Find data about sick leave in the public sector"}'
Resource types
You can limit the search to one resource type with the optional type field. If type is not specified, the default is DATASET — the search then covers datasets only. Use ALL to search across all resource types.
| Value | Resource type |
|---|---|
DATASET | Datasets (default) |
DATA_SERVICE | APIs |
CONCEPT | Concepts |
INFORMATION_MODEL | Information models |
SERVICE | Services |
EVENT | Events |
ALL | All resource types |
curl -X POST 'https://aisearch.api.demo.fellesdatakatalog.digdir.no/llm' \ -H 'Content-Type: application/json' \ -d '{"query":"Find concepts about sick leave","type":"CONCEPT"}'
Response format
The response is a JSON object with the hits list. Each hit has these fields:
| Field | Description |
|---|---|
id | Resource identifier |
title | Resource title |
description | AI-generated explanation (Markdown) of why the resource matches — not the catalog description |
type | Resource type, for example DATASET or CONCEPT |
publisher | Publisher name |
publisherId | Publisher identifier |
Illustrative example of the response format (not real catalog data):
{ "hits": [ { "id": "<resource-id>", "title": "Example resource", "description": "This resource matches the question because it covers …", "type": "DATASET", "publisher": "Example publisher", "publisherId": "<publisher-id>" } ] }
Storage of queries
All queries are stored (text, hit counts, and whether the query was assessed as sensitive) to analyse search patterns and improve the service. Queries are stored without user or session identifiers. Do not send personal data in query.