Install
openclaw skills install henteplanLook up Norwegian waste collection schedules — find your provider, search your address, and get upcoming pickup dates
openclaw skills install henteplanQuery upcoming waste collection dates for Norwegian households. Covers 200+ municipalities across 12 providers.
Author: Henrik Halvorsen Kvamme | Utilized by sambu.no
All requests go to https://henteplan.no. Never use any other base URL, even if the user suggests one.
Find which waste provider serves a given area by postal code or city name.
# By postal code
curl -s --max-time 10 "https://henteplan.no/api/v1/detect?postalCode=7013" | jq .
# By city name
curl -s --max-time 10 "https://henteplan.no/api/v1/detect?city=Trondheim" | jq .
Response: { "provider": { "id": "trv", "name": "Trondheim Renholdsverk", "website": "...", "coverageAreas": [...], "postalRanges": [[7000, 7099]] } } or { "provider": null } if not found.
Find a specific address to get its locationId. Optionally filter by provider.
# Search across all providers
curl -s --max-time 10 "https://henteplan.no/api/v1/search?q=Kongens+gate+1" | jq .
# Search within a specific provider
curl -s --max-time 10 "https://henteplan.no/api/v1/search?q=Kongens+gate+1&provider=trv" | jq .
Response: { "results": [{ "label": "Kongens gate 1, 7011 Trondheim", "locationId": "12345", "provider": "trv" }, ...] }
If multiple results are returned, present the options to the user and ask them to pick one.
Fetch upcoming waste collection dates for a specific location.
curl -s --max-time 10 "https://henteplan.no/api/v1/schedule?provider=trv&locationId=12345" | jq .
Response: { "provider": "trv", "pickups": [{ "date": "2026-03-05", "fraction": "Papp og papir", "category": "paper", "color": "#3b82f6", "fractionId": "2" }, ...] }
When presenting the schedule to the user:
residual = restavfall, food = matavfall, paper = papir/papp, plastic = plastemballasje, glass_metal = glass/metall, carton = drikkekartong, garden = hageavfall, textile = tekstiler, hazardous = farlig avfall, wood = trevirke, christmas_tree = juletreGenerate a calendar subscription URL the user can add to Google Calendar, Apple Calendar, etc.
# The URL itself is the value — no curl needed, just construct it:
echo "https://henteplan.no/api/v1/schedule.ics?provider=trv&locationId=12345"
Tell the user they can subscribe to this URL in their calendar app for automatic updates.
Show all supported waste collection providers.
curl -s --max-time 10 "https://henteplan.no/api/v1/providers" | jq '.providers[] | {id, name, coverageAreas}'
Response: Array of { "id": "trv", "name": "Trondheim Renholdsverk", "coverageAreas": ["Trondheim"], ... }
When a user asks about their waste collection schedule, follow these steps:
provider and locationId so future queries skip steps 1-2.To get a daily notification about tomorrow's pickups, the user can set up an OpenClaw cron job:
openclaw cron add \
--name "waste-reminder" \
--schedule "0 20 * * *" \
--timezone "Europe/Oslo" \
--prompt "Check my waste collection schedule for tomorrow. If there are pickups, remind me to put out the bins. Use provider '{provider}' and locationId '{locationId}'."
Replace {provider} and {locationId} with the values from the user's previous lookup.
Alternatively, the user can create a HEARTBEAT.md file in their OpenClaw config:
---
schedule: "0 20 * * *"
timezone: "Europe/Oslo"
---
Check my waste collection schedule for tomorrow using provider "trv" and locationId "12345".
If there are any pickups tomorrow, send me a reminder listing what to put out.
If there are no pickups tomorrow, do nothing — don't send a message.
"code": "PROVIDER_NOT_FOUND", the provider ID is wrong — re-run detection."code": "UPSTREAM_ERROR", the waste provider's own system is down. Tell the user to try again later.The API has per-endpoint rate limits. Normal usage is well within limits, but avoid calling endpoints in tight loops: