Data source: eInnsyn (einnsyn.no)
https://context.gnist.ai/rest/einnsyn/
AuthenticationAll requests require a Gnist-API-Key header (or api_key query parameter).
Free tier: 100 calls/day. Get your API key.
Tools (6)
search_recordsget_journal_entryget_case_folderlist_organizationsget_publication_statisticsreport_feedback
search_recordsSearch Norwegian public records — journal entries, case folders, and meeting documents.
eInnsyn is Norway's official public records portal. All government agencies are required
to publish their correspondence journals here. This tool searches across all agencies.
Args:
query: Free-text search. Supports exact match with quotes, exclusion with minus.
entity: Filter by type: 'Journalpost', 'Saksmappe', 'Moetemappe', or 'Moetesak'.
limit: Results per page (1-100, default 25).
journal_date_from: Filter by journal date start (ISO date, e.g. '2025-01-01').
journal_date_to: Filter by journal date end (ISO date).
journalpost_type: Filter journal type: 'inngaaende_dokument', 'utgaaende_dokument',
'organinternt_dokument_uten_oppfoelging', 'organinternt_dokument_for_oppfoelging'.
sort_by: Sort order (default 'score'). Options: 'score', 'journaldato', 'publisertDato',
'tittel', 'administrativEnhetNavn'.
Returns:
Dict with 'count', 'items' list, and 'next' cursor for pagination.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | required | Free-text search. Supports exact match with quotes, exclusion with minus. |
entity | any | optional | Filter by type: 'Journalpost', 'Saksmappe', 'Moetemappe', or 'Moetesak'. |
limit | integer | optional | Results per page (1-100, default 25). (default: 25) |
journal_date_from | any | optional | Filter by journal date start (ISO date, e.g. '2025-01-01'). |
journal_date_to | any | optional | Filter by journal date end (ISO date). |
journalpost_type | any | optional | Filter journal type: 'inngaaende_dokument', 'utgaaende_dokument', 'organinternt_dokument_uten_oppfoelging', 'organinternt_dokument_for_oppfoelging'. |
sort_by | string | optional | Sort order (default 'score'). Options: 'score', 'journaldato', 'publisertDato', 'tittel', 'administrativEnhetNavn'. (default: "score") |
{
"query": "example"
}get_journal_entryGet a specific journal entry (journalpost) from eInnsyn.
Returns the full entry with correspondents (senders/recipients) and attached
document metadata. Use the ID from search_records results.
Args:
journalpost_id: The journal entry ID (e.g. 'jp_...' or a UUID).
Returns:
Full journal entry with title, dates, correspondents, and documents.
| Parameter | Type | Required | Description |
|---|---|---|---|
journalpost_id | string | required | The journal entry ID (e.g. 'jp_...' or a UUID). |
{
"journalpost_id": "example"
}get_case_folderGet a case folder (saksmappe) from eInnsyn.
A case folder groups related journal entries for a government case.
Returns the case metadata and list of associated journal entry IDs.
Args:
saksmappe_id: The case folder ID (e.g. 'sm_...' or a UUID).
Returns:
Case folder with title, case number, and journal entry references.
| Parameter | Type | Required | Description |
|---|---|---|---|
saksmappe_id | string | required | The case folder ID (e.g. 'sm_...' or a UUID). |
{
"saksmappe_id": "example"
}list_organizationsList government organizations registered in eInnsyn.
Returns organizational units (ministries, agencies, municipalities) that
publish records to eInnsyn.
Args:
limit: Number of organizations to return (1-100, default 25).
Returns:
Dict with 'count', 'units' list (id, name, parent), and 'next' cursor.
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | optional | Number of organizations to return (1-100, default 25). (default: 25) |
{
"query": "example"
}get_publication_statisticsGet aggregate publication statistics for eInnsyn records.
Shows how many records have been published, how many include full text,
and download counts. Useful for transparency reporting and trend analysis.
Args:
interval: Aggregation interval: 'hour', 'day', 'week', 'month', 'year'.
date_from: Start date (ISO, e.g. '2025-01-01'). Defaults to one year ago.
date_to: End date (ISO). Defaults to today.
Returns:
Dict with 'summary' (totals) and 'time_series' (bucketed counts).
| Parameter | Type | Required | Description |
|---|---|---|---|
interval | string | optional | Aggregation interval: 'hour', 'day', 'week', 'month', 'year'. (default: "month") |
date_from | any | optional | Start date (ISO, e.g. '2025-01-01'). Defaults to one year ago. |
date_to | any | optional | End date (ISO). Defaults to today. |
{
"query": "example"
}report_feedbackReport a bug, feature request, or general feedback for this data source.
Use this when something doesn't work as expected, when you'd like
a new feature, or when you have suggestions for improvement.
Args:
feedback: Describe the issue or suggestion.
feedback_type: One of 'bug', 'feature_request', or 'general'.
| Parameter | Type | Required | Description |
|---|---|---|---|
feedback | string | required | |
feedback_type | string | optional | (default: "general") |
{
"feedback": "example"
}Quick Start
curl -X POST "https://context.gnist.ai/rest/einnsyn/search_records" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"query": "example"}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/rest/einnsyn/search_records",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={
"query": "example"
},
)
print(resp.json())