{"id":"stillinger","name":"Open positions","description":"Recently published jobs and details from NAV's open labour-market data.","documentation":null,"operations":[{"name":"get_recent_jobs","description":"Job vacancies posted or changed at/after a date, from NAV's stillingsfeed.","parameters":[{"name":"since","type":"string","schema":{"anyOf":[{"type":"string"},{"type":"null"}]},"display_type":"string","required":false,"default":null,"description":"ISO date or datetime (UTC), e.g. \"2026-07-01\" or \"2026-07-01T08:00:00Z\". Default: 24 hours ago. Earlier dates cover more but walk more pages (see max_pages). A `since` in the future returns nothing."},{"name":"keyword","type":"string","schema":{"anyOf":[{"type":"string"},{"type":"null"}]},"display_type":"string","required":false,"default":null,"description":"Case-insensitive substring filter on job title and employer."},{"name":"municipality","type":"string","schema":{"anyOf":[{"type":"string"},{"type":"null"}]},"display_type":"string","required":false,"default":null,"description":"Case-insensitive substring filter on the ad's municipality (e.g. \"OSLO\", \"Bergen\")."},{"name":"active_only","type":"boolean","schema":{"type":"boolean"},"display_type":"yes/no","required":false,"default":true,"description":"If True (default), return only ads whose latest state is ACTIVE. False also includes ads that have since gone INACTIVE."},{"name":"max_results","type":"integer","schema":{"type":"integer"},"display_type":"integer","required":false,"default":50,"description":"Cap on returned ads, 1-200 (default 50). Newest first."},{"name":"max_pages","type":"integer","schema":{"type":"integer"},"display_type":"integer","required":false,"default":20,"description":"Safety cap on feed pages walked, 1-100 (default 20). Each page is up to 1000 events. If hit before reaching the newest page, `truncated` is True and the newest ads may be missing; narrow `since` toward now or raise this."},{"name":"limit","type":"integer","schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"display_type":"integer","required":false,"default":25,"description":"Maximum list items returned by the gateway (default 25, maximum 100)."},{"name":"offset","type":"integer","schema":{"type":"integer","minimum":0,"default":0},"display_type":"integer","required":false,"default":0,"description":"Number of list items to skip before returning the page."}],"json_get_url_template":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger/get_recent_jobs?since={since}&keyword={keyword}&municipality={municipality}&active_only=true&max_results=50&max_pages=20&limit=25&offset=0","output_fields":["since","match_count","returned","jobs","note","pages_scanned","unique_ads_scanned","truncated"],"output_fields_truncated":false,"canonical_field_aliases":{},"description_language":"en","documentation":"Job vacancies posted or changed at/after a date, from NAV's stillingsfeed.\n\nThe feed is a forward-only, oldest-first chain of ad change-events. This\ntool positions into it by `since`, walks forward to the newest page,\nkeeps the latest state per ad (deduped by id), then filters client-side.\n\nArgs:\n    since: ISO date or datetime (UTC), e.g. \"2026-07-01\" or\n        \"2026-07-01T08:00:00Z\". Default: 24 hours ago. Earlier dates\n        cover more but walk more pages (see max_pages). A `since` in the\n        future returns nothing.\n    keyword: Case-insensitive substring filter on job title and employer.\n    municipality: Case-insensitive substring filter on the ad's\n        municipality (e.g. \"OSLO\", \"Bergen\").\n    active_only: If True (default), return only ads whose latest state is\n        ACTIVE. False also includes ads that have since gone INACTIVE.\n    max_results: Cap on returned ads, 1-200 (default 50). Newest first.\n    max_pages: Safety cap on feed pages walked, 1-100 (default 20). Each\n        page is up to 1000 events. If hit before reaching the newest page,\n        `truncated` is True and the newest ads may be missing; narrow\n        `since` toward now or raise this.\n\nReturns a dict with `since` (the resolved If-Modified-Since), `pages_scanned`,\n`unique_ads_scanned`, `match_count` (after filters), `returned`, `truncated`,\nand `jobs`: each with id, title, employer, municipal, status, modified, link.\nPass a job's `id` to get_job for the full ad.","documentation_language":"en","wiki_get_endpoint":"https://allemannsdata.com/wiki/kilder/stillinger/get_recent_jobs/","wiki_get_url_template":"https://allemannsdata.com/wiki/kilder/stillinger/get_recent_jobs/?since={since}&keyword={keyword}&municipality={municipality}&active_only=true&max_results=50&max_pages=20&limit=25&offset=0","json_endpoint":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger/get_recent_jobs","response_schema":{"type":"object","properties":{"since":{"type":"string"},"match_count":{"type":"integer"},"returned":{"type":"integer"},"jobs":{"anyOf":[{"type":"array","items":{"x-allemannsdata-schema-status":"unresolved","description":"Response shape is not yet declared; any JSON value is permitted."}},{"type":"array","items":{"type":"array","items":{"x-allemannsdata-schema-status":"unresolved","description":"Response shape is not yet declared; any JSON value is permitted."}}},{"x-allemannsdata-schema-status":"unresolved","description":"Response shape is not yet declared; any JSON value is permitted."}]},"note":{"type":"string"},"pages_scanned":{"type":"integer"},"unique_ads_scanned":{"type":"integer"},"truncated":{"type":"boolean"}},"additionalProperties":false},"response_schema_status":{"status":"incomplete","codegen_safe":false,"description":"Not suitable for typed model generation: the container shape and field names are useful, but unresolved values accept any JSON value."},"entity_projection":{"status":"projected","entity_types":["job","organization"],"description":"Recognized records and stable operation identifiers are projected; an empty array means the successful payload contained no recognizable entity."},"response_schema_url":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger/get_recent_jobs/schema","endpoint":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger/get_recent_jobs","get_url_template":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger/get_recent_jobs?since={since}&keyword={keyword}&municipality={municipality}&active_only=true&max_results=50&max_pages=20&limit=25&offset=0"},{"name":"get_job","description":"Full details for one job ad, by its feed entry id (a UUID).","parameters":[{"name":"entry_id","type":"string","schema":{"type":"string"},"display_type":"string","required":true,"default":null,"description":""},{"name":"limit","type":"integer","schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"display_type":"integer","required":false,"default":25,"description":"Maximum list items returned by the gateway (default 25, maximum 100)."},{"name":"offset","type":"integer","schema":{"type":"integer","minimum":0,"default":0},"display_type":"integer","required":false,"default":0,"description":"Number of list items to skip before returning the page."}],"json_get_url_template":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger/get_job?entry_id={entry_id}&limit=25&offset=0","output_fields":["id","status","note","title","employer","employer.name","employer.orgnr","employer.homepage","employer.about","locations","locations[].address","locations[].postal_code","locations[].city","locations[].municipal","locations[].county","locations[].country","published","expires","application_due","application_url","link","source","employment_type","extent","sector","position_count","start","occupation_categories","styrk_codes","styrk_codes[].type"],"output_fields_truncated":true,"canonical_field_aliases":{"identifier":["id","employer.orgnr","styrk_codes[].code"],"name":["title","employer.name","styrk_codes[].name"]},"description_language":"en","documentation":"Full details for one job ad, by its feed entry id (a UUID).\n\nGet ids from get_recent_jobs (each job's `id`). Expired/withdrawn ads keep\nonly their status: NAV strips the content once an ad goes INACTIVE, so for\nthose this returns just uuid, status and a note.\n\nReturns a dict with id, status, title, employer (name/orgnr/homepage/about),\nlocations, published, expires, application_due, application_url, link,\nsource, employment_type, extent, sector, position_count, start,\noccupation_categories, styrk_codes, and description (plain text).","documentation_language":"en","wiki_get_endpoint":"https://allemannsdata.com/wiki/kilder/stillinger/get_job/","wiki_get_url_template":"https://allemannsdata.com/wiki/kilder/stillinger/get_job/?entry_id={entry_id}&limit=25&offset=0","json_endpoint":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger/get_job","response_schema":{"type":"object","properties":{"id":{"type":["string","null"]},"status":{"type":["string","null"]},"note":{"type":"string"},"title":{"type":["string","null"]},"employer":{"type":"object","properties":{"name":{"type":["string","null"]},"orgnr":{"x-allemannsdata-schema-status":"unresolved","description":"Response shape is not yet declared; any JSON value is permitted."},"homepage":{"type":["string","null"],"format":"uri"},"about":{"type":"string"}},"additionalProperties":false},"locations":{"type":"array","items":{"type":"object","properties":{"address":{"x-allemannsdata-schema-status":"unresolved","description":"Response shape is not yet declared; any JSON value is permitted."},"postal_code":{"type":["string","null"]},"city":{"x-allemannsdata-schema-status":"unresolved","description":"Response shape is not yet declared; any JSON value is permitted."},"municipal":{"x-allemannsdata-schema-status":"unresolved","description":"Response shape is not yet declared; any JSON value is permitted."},"county":{"x-allemannsdata-schema-status":"unresolved","description":"Response shape is not yet declared; any JSON value is permitted."},"country":{"x-allemannsdata-schema-status":"unresolved","description":"Response shape is not yet declared; any JSON value is permitted."}},"additionalProperties":false}},"published":{"x-allemannsdata-schema-status":"unresolved","description":"Response shape is not yet declared; any JSON value is permitted."},"expires":{"x-allemannsdata-schema-status":"unresolved","description":"Response shape is not yet declared; any JSON value is permitted."},"application_due":{"x-allemannsdata-schema-status":"unresolved","description":"Response shape is not yet declared; any JSON value is permitted."},"application_url":{"type":["string","null"],"format":"uri"},"link":{"type":["string","null"],"format":"uri"},"source":{"type":"boolean"},"employment_type":{"x-allemannsdata-schema-status":"unresolved","description":"Response shape is not yet declared; any JSON value is permitted."},"extent":{"x-allemannsdata-schema-status":"unresolved","description":"Response shape is not yet declared; any JSON value is permitted."},"sector":{"x-allemannsdata-schema-status":"unresolved","description":"Response shape is not yet declared; any JSON value is permitted."},"position_count":{"type":["integer","null"]},"start":{"x-allemannsdata-schema-status":"unresolved","description":"Response shape is not yet declared; any JSON value is permitted."},"occupation_categories":{"type":"boolean"},"styrk_codes":{"type":"array","items":{"type":"object","properties":{"type":{"type":["string","null"]},"code":{"x-allemannsdata-schema-status":"unresolved","description":"Response shape is not yet declared; any JSON value is permitted."},"name":{"type":["string","null"]}},"additionalProperties":false}},"description":{"type":"string"}},"additionalProperties":false},"response_schema_status":{"status":"incomplete","codegen_safe":false,"description":"Not suitable for typed model generation: the container shape and field names are useful, but unresolved values accept any JSON value."},"entity_projection":{"status":"projected","entity_types":["job","organization"],"description":"Recognized records and stable operation identifiers are projected; an empty array means the successful payload contained no recognizable entity."},"response_schema_url":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger/get_job/schema","endpoint":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger/get_job","get_url_template":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger/get_job?entry_id={entry_id}&limit=25&offset=0"}],"operation_schema_url_template":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger/{operation}/schema","related_sources":[{"id":"firmafakta","name":"Firmafakta","reason":"Company facts about the employer, including jobs by organization number.","api":"https://allemannsdata.com/wiki/api/v1/kilder/firmafakta","wiki":"https://allemannsdata.com/wiki/kilder/firmafakta/"}],"_meta":{"retrieved_at":"2026-08-02T14:01:12Z","language":"en","content_languages":["en"],"sources":[{"id":"stillinger","name":"Open positions","description":"Recently published jobs and details from NAV's open labour-market data.","cache_ttl_seconds":60}]},"_links":{"self":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger","names":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger?view=names","compact":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger?view=compact","full":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger","wiki":"https://allemannsdata.com/wiki/kilder/stillinger/"}}
