normattiva.it APIwww.normattiva.it ↗
Search and retrieve Italian legislative acts from Normattiva.it. Filter by year, act type, number, or keyword. Returns full text with article structure preserved.
curl -X GET 'https://api.parse.bot/scraper/083d53e7-2d04-43bf-bac9-652b1dc273ba/search_laws?year=2024&act_type=LEGGE' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for Italian laws/acts using advanced search filters. Returns paginated results with 20 items per page. At least one search parameter should be provided.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (0-indexed) |
| year | string | Year of the act (e.g., '2024') |
| query | string | Text to search in the body of laws |
| number | string | Act number (e.g., '213') |
| act_type | string | Type/denomination of the act (e.g., 'LEGGE', 'DECRETO-LEGGE', 'DECRETO LEGISLATIVO') |
| title_search | string | Text to search in the title of laws |
{
"type": "object",
"fields": {
"page": "integer - current page number (0-indexed)",
"results": "array of result objects with official_title, description, publication_date, gazzetta_ufficiale, codice_redazionale, detail_url",
"per_page": "integer - results per page (always 20)",
"total_count": "integer - total number of matching acts",
"has_next_page": "boolean - whether more pages are available",
"results_on_page": "integer - number of results on this page"
},
"sample": {
"data": {
"page": 0,
"results": [
{
"detail_url": "https://www.normattiva.it/atto/caricaDettaglioAtto?atto.dataPubblicazioneGazzetta=2026-05-06&atto.codiceRedazionale=26G00073&atto.articolo.numero=0&atto.articolo.sottoArticolo=1&atto.articolo.sottoArticolo1=0&qId=",
"description": "Ratifica ed esecuzione dell'Accordo quadro di partenariato e cooperazione tra l'Unione europea e i suoi Stati membri, da una parte, e il Governo della Malaysia, dall'altra, fatto a Bruxelles il 14 dicembre 2022. (26G00073)",
"official_title": "LEGGE 10 Aprile 2026, n. 65",
"publication_date": "2026-05-06",
"codice_redazionale": "26G00073",
"gazzetta_ufficiale": "(GU n. 103 del 06-05-2026)"
}
],
"per_page": 20,
"total_count": 982,
"has_next_page": false,
"results_on_page": 20
},
"status": "success"
}
}About the normattiva.it API
The Normattiva API gives programmatic access to Italy's official legislative database through 4 endpoints covering search, full-text retrieval, and autocomplete. Use search_laws to filter acts by year, act type (LEGGE, DECRETO-LEGGE, DECRETO LEGISLATIVO), act number, or body text, and get_law_full_text to retrieve the complete content of a specific act with its article numbering (Art. 1, Art. 2, etc.) intact.
Search and Filter Italian Legislation
search_laws accepts up to six filter parameters — year, number, act_type, query (body text), title_search, and page — and returns paginated results of 20 items per page. Each result object includes official_title, description, publication_date, gazzetta_ufficiale (the Gazzetta Ufficiale reference), codice_redazionale (a unique act identifier), and a detail_url. The total_count and has_next_page fields let you walk through large result sets. For simpler use cases, search_laws_simple accepts just a query string and returns the same response shape.
Full-Text Retrieval
get_law_full_text takes two required inputs — publication_date (YYYY-MM-DD) and codice_redazionale — both available from search results. It returns official_title, subtitle, publication_date, the act's codice_redazionale, and full_text with article numbering preserved. Acts that have not yet entered into force return a full_text value indicating 'NON ANCORA ESISTENTE O VIGENTE' rather than the article body.
Autocomplete Suggestions
suggest accepts a partial Italian-language query (minimum 3 characters) and returns up to 5 matching terms from the Normattiva corpus. Each suggestion object contains label (HTML-formatted, suitable for display), value (plain text), and name. Terms outside the corpus return an empty list, so this endpoint is most reliable with Italian legal terminology.
Coverage and Identifiers
The codice_redazionale field (example: 26G00036) is the stable identifier for each act and should be used to link search results to full-text retrieval. The gazzetta_ufficiale field provides the original publication reference in the Italian Official Gazette. All act types present on Normattiva — including laws, legislative decrees, and decree-laws — are searchable via the act_type filter.
- Build a legal research tool that lets users filter Italian laws by year and act type, then display full article text.
- Monitor newly published decrees by querying
search_lawswith a specificyearandact_typeof 'DECRETO-LEGGE'. - Power an autocomplete search bar for Italian legal terms using the
suggestendpoint. - Cross-reference a specific law number against its Gazzetta Ufficiale publication details returned in search results.
- Ingest full legislative texts into a document store for NLP or semantic search by retrieving
full_textviaget_law_full_text. - Track all legislative acts matching a keyword across multiple years using paginated
search_lawsqueries. - Extract structured act metadata (title, publication date, codice_redazionale) for a compliance or regulatory database.
| 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 | 250 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 Normattiva provide an official developer API?+
What identifiers do I need to retrieve the full text of a specific act?+
get_law_full_text requires two fields from search results: publication_date (in YYYY-MM-DD format) and codice_redazionale (e.g., '26G00036'). Both are returned in every result object from search_laws and search_laws_simple. Without both values the full-text endpoint cannot resolve the act.What happens when a law exists in the database but is not yet in force?+
get_law_full_text endpoint still returns a valid response, but the full_text field will contain the string 'NON ANCORA ESISTENTE O VIGENTE' instead of article content. The official_title, subtitle, publication_date, and codice_redazionale fields are still populated.