Matprat APImatprat.no ↗
Access Matprat.no recipe data via API: full recipe details, nutrition, ratings, weekly meal plans, search with filters, and autocomplete suggestions.
What is the Matprat API?
The Matprat.no API exposes 5 endpoints covering Norway's largest recipe site, letting you retrieve full recipe details (including nutrition facts, step-by-step instructions, and aggregate ratings), run filtered searches across the entire recipe catalog, and fetch the curated weekly meal plan. The get_recipe endpoint returns 10 structured fields per recipe, while search_recipes supports cumulative filters for diet type, commodity, preparation time, and more.
curl -X GET 'https://api.parse.bot/scraper/3da2a980-e1c7-407d-b676-13e7a80ebbd0/get_recipe?url=%2Foppskrifter%2Frask%2Fpasta-puttanesca%2F' \ -H 'X-API-Key: $PARSE_API_KEY'
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 matprat-no-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.
"""Matprat recipe discovery: search, detail, weekly menu, autocomplete."""
from parse_apis.Matprat_API import Matprat, Sort, RecipeNotFound
client = Matprat()
# Search for pasta recipes sorted by popularity
for hit in client.recipe_hits.search(query="pasta", sort=Sort.POPULAR, limit=3):
print(hit.title, hit.data.difficulty, hit.data.rating)
# Get full details of the first hit
hit = client.recipe_hits.search(query="kylling", limit=1).first()
if hit:
recipe = client.recipes.get(url=hit.data.link_url)
print(recipe.name, recipe.nutrition.calories, recipe.aggregate_rating.rating_value)
for step in recipe.recipe_instructions[:3]:
print(step.text)
# Weekly meal plan
for item in client.menu_items.list(limit=5):
print(item.name, item.day, item.difficulty, item.preparation_time)
# Autocomplete suggestions
for suggestion in client.suggestions.search(query="laks", limit=4):
print(suggestion.type, suggestion.data.name)
# Error handling: catch recipe not found
try:
client.recipes.get(url="/oppskrifter/does-not-exist/")
except RecipeNotFound as exc:
print(f"Recipe not found: {exc}")
print("exercised: recipe_hits.search / recipes.get / menu_items.list / suggestions.search")Fetch full details of a single recipe by its URL path on matprat.no. Returns structured recipe data including name, description, ingredients, step-by-step instructions, nutrition facts, aggregate rating, and a related recipe suggestion. The URL path is the canonical identifier found in search results under data.linkUrl.
| Param | Type | Description |
|---|---|---|
| urlrequired | string | URL path of the recipe on matprat.no (e.g. /oppskrifter/rask/pasta-puttanesca/). |
{
"type": "object",
"fields": {
"name": "string — recipe title",
"nutrition": "object with calories, carbohydrateContent, proteinContent, fatContent as strings with units",
"totalTime": "string — ISO 8601 duration",
"api_rating": "object with rating, ratingPrecise, ratingCount, alreadyRated, authenticated",
"description": "string — short recipe description",
"recipeYield": "string — serving size description",
"datePublished": "string — ISO date",
"recipeCuisine": "array of cuisine strings",
"recipeCategory": "array of category strings",
"aggregateRating": "object with ratingValue (number) and ratingCount (integer)",
"recipeIngredient": "array of ingredient strings with amounts and units",
"recipeInstructions": "array of HowToStep objects each with a text field",
"api_related_recipes": "object with a related recipe suggestion including name, url, difficulty, preparationTime"
},
"sample": {
"data": {
"name": "Pasta puttanesca",
"nutrition": {
"@type": "NutritionInformation",
"calories": "761 KCAL",
"fatContent": "40 G",
"proteinContent": "21 G",
"carbohydrateContent": "74 G"
},
"totalTime": "PT20M",
"api_rating": {
"rating": 5,
"ratingCount": 2,
"alreadyRated": false,
"authenticated": false,
"ratingPrecise": 5
},
"description": "En klassisk italiensk pastarett!",
"recipeYield": "2 PORSJONER",
"datePublished": "2025-09-08",
"recipeCuisine": [
"Internasjonal"
],
"recipeCategory": [
"Pasta"
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingCount": 2,
"ratingValue": 5
},
"recipeIngredient": [
" 200 g spagetti",
" 2 båter hvitløk"
],
"recipeInstructions": [
{
"text": "Kok spagetti i godt saltet vann.",
"@type": "HowToStep"
}
],
"api_related_recipes": {
"url": "/oppskrifter/familien/pasta-med-kikertboller-og-gulrotpesto/",
"name": "Pasta med kikertboller og gulrotpesto"
}
},
"status": "success"
}
}About the Matprat API
Recipe Data
The get_recipe endpoint accepts a URL path (e.g. /oppskrifter/rask/pasta-puttanesca/) and returns a fully structured recipe object. Key fields include name, description, totalTime as an ISO 8601 duration, recipeYield, datePublished, recipeCuisine, and recipeCategory arrays. The nutrition object breaks down calories, carbohydrateContent, proteinContent, and fatContent as labeled strings. The aggregateRating field provides both a ratingValue and ratingCount drawn from user ratings on the site.
Search and Discovery
search_recipes supports full-text queries via the query parameter (Norwegian terms like kylling or pasta work as expected) and returns paginated searchHits with recipe summaries including linkUrl, difficulty, preparationTime, and rating data. The searchFilters array in each response provides the valid filter IDs for parameters like commodity (e.g. 68 for beef, 69 for pork), diet_type (e.g. 358 for vegetarian, 357 for vegan), origins, and prep_time. Filters are cumulative. The get_popular_recipes endpoint returns the same response shape but ranked by current popularity rather than search relevance.
Weekly Meal Plans and Autocomplete
get_weekly_menu returns one recipe per day (Monday through Sunday) for a given ISO week and year. Each day entry includes the recipe id, name, day, linkUrl, ingredients, rating, difficulty, preparationTime, and portions. When week and year are omitted, it defaults to the current week. The autocomplete endpoint takes a search prefix and returns two item types: filter suggestions (dish types, ingredients with IDs usable in search_recipes) and content suggestions (recipe previews), making it practical for building search-as-you-type interfaces or discovering valid filter values without guessing.
The Matprat API is a managed, monitored endpoint for matprat.no — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when matprat.no 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 matprat.no 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.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a Norwegian meal planner app using
get_weekly_menuto populate a weekly calendar with curated recipes and ingredient lists. - Index Matprat's recipe catalog with
search_recipesfiltered bydiet_typeto create a vegetarian or vegan recipe directory. - Display nutrition breakdowns (calories, protein, fat, carbohydrates) from
get_recipein a food tracking or calorie-counting tool. - Implement a recipe search-as-you-type feature using
autocompleteto surface both matching recipes and filterable ingredient categories. - Aggregate trending Norwegian recipes by polling
get_popular_recipesand tracking which recipes appear consistently over time. - Filter recipes by preparation time and main commodity via
search_recipesto power a 'what can I cook tonight' quick-meal recommender. - Extract
aggregateRatingandratingCountfields fromget_recipeto rank or compare recipes in a curated collection.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 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.
Does Matprat.no have an official developer API?+
What does `search_recipes` return and how do I use the filter parameters?+
totalHits, a searchHits array of recipe summaries (each with id, title, description, linkUrl, difficulty, preparationTime, and rating), and a searchFilters array listing all valid filter options. To filter results, pass the ID values from searchFilters into parameters like commodity, diet_type, prep_time, or origins. Filters are cumulative — you can combine multiple parameters in a single request to narrow results further.Does `get_recipe` return the full ingredient list and step-by-step instructions?+
nutrition, aggregateRating, totalTime, and recipeCategory are returned in the same response.Does the API cover user-submitted recipes or only editorially curated content?+
search_recipes and get_popular_recipes endpoints surface the main published catalog. You can fork this API on Parse and revise it to add an endpoint targeting any additional content sections the site may provide.Can I retrieve historical weekly meal plans, or only the current week?+
get_weekly_menu accepts both week (ISO week number 1–53) and year parameters, so you can request past or future weeks directly. When both parameters are omitted, it defaults to the current ISO week and year. The range of available historical data depends on what matprat.no has published for a given week.