Integra Maphira nelle tue applicazioni con la nostra API REST
Per utilizzare le API di Maphira, devi autenticarti con una chiave API. Puoi creare le tue chiavi dalla pagina Chiavi API.
Includi la chiave nell'header Authorization di ogni richiesta:
Authorization: Bearer maphira_xxxxxxxxxxxxxx
curl -X GET "https://maphira.com/api/v1/scans" \
-H "Authorization: Bearer maphira_tua_chiave_api"
/api/v1/scans
Restituisce tutte le scansioni del tuo account.
curl -X GET "https://maphira.com/api/v1/scans" \
-H "Authorization: Bearer maphira_xxx"
{
"scans": [
{
"id": "abc123-def456",
"url": "https://example.com",
"status": "completed",
"max_pages": 50,
"pages_found": 25,
"created_at": "2026-02-03T10:30:00",
"scan_time_seconds": 45.2
}
],
"total": 1
}
/api/v1/scan
Avvia una nuova scansione associata al tuo account.
{
"url": "https://example.com",
"xpaths": [
["Titolo", "//title/text()"],
["H1", "//h1/text()"]
],
"max_pages": 50,
"timeout": 60,
"enable_ai": true,
"light_scan": false,
"follow_nofollow": false,
"schedule_enabled": true,
"schedule_day": 15
}
| Nome | Tipo | Descrizione |
|---|---|---|
url | string | URL del sito da scansionare (obbligatorio) |
xpaths | array | Array di [nome, xpath] per estrazione contenuti |
max_pages | integer | Numero massimo di pagine (default: 50, max: 5000) |
timeout | integer | Timeout in secondi (default: 60, max: 3600) |
enable_ai | boolean | Abilita analisi AI semiotica e neuromarketing (default: false) |
light_scan | boolean | Scansione leggera con campi essenziali (default: false) |
follow_nofollow | boolean | Segui anche i link nofollow durante il crawl (default: false). Per default i link nofollow vengono ignorati. |
schedule_enabled | boolean | Abilita scansione mensile automatica (default: false) |
schedule_day | integer | Giorno del mese per scansione automatica (1-28, default: 1) |
ai_entities, ai_framing, ai_priming, ai_wow_effect, ai_hormones, ai_persuasion (principi di Cialdini), ai_intent, ai_funnel, ai_motivations, ai_needs, ai_fears, ai_eee_model, ai_coherence_score, ai_archetype.
schedule_enabled è true, la scansione verrà ripetuta automaticamente ogni mese nel giorno specificato. Lo scheduler verifica ogni ora ed evita ri-esecuzioni entro 25 giorni.
curl -X POST "https://maphira.com/api/v1/scan" \
-H "Authorization: Bearer maphira_xxx" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "max_pages": 10}'
{
"job_id": "abc123-def456",
"status": "starting",
"message": "Scansione avviata con successo"
}
/api/v1/scan/{job_id}/results
Ottiene i risultati completi di una scansione, incluse tutte le pagine.
| Nome | Tipo | Descrizione |
|---|---|---|
fields | string | Lista di campi separati da virgola (opzionale). Riduce la risposta ai soli campi richiesti. |
url, status, robots_indexable, title, meta_desc, h1, depth, word_count, canonical, lang, date_published, date_modified, links_internal_count, redirect_url, ai_intent, ai_funnel, ai_archetype, ai_entities, ai_framing, ai_persuasion, ...
curl -X GET "https://maphira.com/api/v1/scan/abc123/results" \
-H "Authorization: Bearer maphira_xxx"
curl -X GET "https://maphira.com/api/v1/scan/abc123/results?fields=url,title,ai_intent,ai_funnel" \
-H "Authorization: Bearer maphira_xxx"
{
"scan": {
"id": "abc123",
"url": "https://example.com",
"status": "completed",
"pages_found": 25
},
"pages": [
{
"url": "https://example.com/page1",
"title": "Page Title",
"ai_intent": "informativo",
"ai_funnel": "awareness"
}
],
"total_pages": 25,
"fields_requested": ["url", "title", "ai_intent", "ai_funnel"]
}
/api/v1/scan/{job_id}
Elimina una scansione e tutti i suoi dati.
curl -X DELETE "https://maphira.com/api/v1/scan/abc123" \
-H "Authorization: Bearer maphira_xxx"
{
"message": "Scansione eliminata con successo"
}
/api/v1/scan/{job_id}/refresh
Crea una nuova scansione con gli stessi parametri della scansione originale (URL, XPaths, impostazioni AI, ecc.).
curl -X POST "https://maphira.com/api/v1/scan/abc123/refresh" \
-H "Authorization: Bearer maphira_xxx"
{
"message": "Scansione refresh avviata",
"scan": {
"id": "new-scan-id",
"url": "https://example.com",
"status": "pending",
"parent_scan_id": "abc123"
},
"original_scan_id": "abc123"
}
/api/v1/scan/{job_id}/add-urls
Aggiunge URL specifiche a una scansione esistente. Usa le stesse impostazioni della scansione originale (XPath, AI, scansione leggera). Non esegue crawling - scansiona solo gli URL specificati, ideale per risparmiare costi API.
{
"urls": [
"https://example.com/nuova-pagina-1/",
"https://example.com/nuova-pagina-2/",
"https://example.com/blog/articolo/"
]
}
| Nome | Tipo | Descrizione |
|---|---|---|
urls | array | Array di URL da aggiungere alla scansione (obbligatorio) |
curl -X POST "https://maphira.com/api/v1/scan/abc123/add-urls" \
-H "Authorization: Bearer maphira_xxx" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://example.com/pagina1/", "https://example.com/pagina2/"]}'
{
"message": "Aggiunta URL avviata",
"scan": {
"id": "abc123",
"status": "running"
},
"urls_to_add": 2,
"urls_skipped": 0,
"existing_pages": 50
}
Nota: Gli URL duplicati o già presenti nella scansione vengono ignorati automaticamente. Gli URL vengono normalizzati con trailing slash.
/api/v1/scan/{job_id}/resume
Riprende una scansione che si è bloccata o è fallita, continuando dal punto in cui si era fermata. Ideale per scansioni interrotte a metà.
| Status | Descrizione |
|---|---|
blocked | Scansione bloccata dopo aver salvato alcune pagine |
failed | Scansione fallita (riparte da eventuali pagine esistenti) |
curl -X POST "https://maphira.com/api/v1/scan/abc123/resume" \
-H "Authorization: Bearer maphira_xxx"
{
"message": "Scansione ripresa",
"scan": {
"id": "abc123",
"status": "running"
},
"pages_already_done": 25,
"max_pages": 100,
"remaining": 75
}
Nota: La scansione riprende con le stesse impostazioni originali (XPath, AI, scansione leggera). Gli URL già scansionati vengono saltati automaticamente.
/api/v1/scan/{job_id}/schedule
Aggiorna le impostazioni di schedulazione mensile per una scansione esistente.
{
"schedule_enabled": true,
"schedule_day": 15
}
| Nome | Tipo | Descrizione |
|---|---|---|
schedule_enabled | boolean | Abilita/disabilita la scansione mensile automatica |
schedule_day | integer | Giorno del mese (1-28) in cui eseguire la scansione |
curl -X PATCH "https://maphira.com/api/v1/scan/abc123/schedule" \
-H "Authorization: Bearer maphira_xxx" \
-H "Content-Type: application/json" \
-d '{"schedule_enabled": true, "schedule_day": 15}'
{
"message": "Schedulazione aggiornata",
"scan": {
"id": "abc123",
"schedule_enabled": true,
"schedule_day": 15
}
}
Scopri e analizza le sitemap di qualsiasi sito web, poi estrai tutti gli URL con metadati. Flusso in due fasi: prima scopri le sitemap disponibili, poi estrai gli URL da quelle selezionate.
/api/v1/sitemap/discover
Analizza un dominio per trovare tutte le sitemap disponibili. Cerca nel robots.txt, nei percorsi CMS comuni (WordPress, Yoast, ecc.) e supporta sitemap index con nidificazione.
{
"domain": "example.com"
}
| Nome | Tipo | Descrizione |
|---|---|---|
domain | string | Dominio da analizzare (obbligatorio, es. "example.com") |
curl -X POST "https://maphira.com/api/v1/sitemap/discover" \
-H "Authorization: Bearer maphira_xxx" \
-H "Content-Type: application/json" \
-d '{"domain": "example.com"}'
{
"domain": "example.com",
"total_sitemaps": 4,
"total_urls": 146,
"discovered_sitemaps": [
{
"url": "https://example.com/sitemap_index.xml",
"type": "index",
"accessible": true,
"url_count": 146,
"lastmod": null,
"child_sitemaps": [
{
"url": "https://example.com/post-sitemap.xml",
"type": "urlset",
"accessible": true,
"url_count": 120,
"lastmod": "2026-02-04T19:17:47+00:00"
},
{
"url": "https://example.com/page-sitemap.xml",
"type": "urlset",
"accessible": true,
"url_count": 25,
"lastmod": null
}
]
}
]
}
index = sitemap indice che contiene riferimenti ad altre sitemap. urlset = sitemap che contiene URL finali. Per estrarre tutti gli URL da un indice, puoi passare direttamente l'URL dell'indice all'endpoint di estrazione.
/api/v1/sitemap/extract
Estrae tutti gli URL dalle sitemap selezionate, con metadati come data di modifica, frequenza di aggiornamento e priorità. Supporta sia sitemap singole che sitemap indice (estrae ricorsivamente da tutte le figlie).
{
"sitemap_urls": [
"https://example.com/sitemap_index.xml"
]
}
| Nome | Tipo | Descrizione |
|---|---|---|
sitemap_urls | array | Array di URL di sitemap da cui estrarre (obbligatorio). Puoi passare URL di sitemap indice o sitemap singole. |
curl -X POST "https://maphira.com/api/v1/sitemap/extract" \
-H "Authorization: Bearer maphira_xxx" \
-H "Content-Type: application/json" \
-d '{"sitemap_urls": ["https://example.com/sitemap_index.xml"]}'
curl -X POST "https://maphira.com/api/v1/sitemap/extract" \
-H "Authorization: Bearer maphira_xxx" \
-H "Content-Type: application/json" \
-d '{"sitemap_urls": ["https://example.com/post-sitemap.xml", "https://example.com/page-sitemap.xml"]}'
{
"total_urls": 146,
"urls": [
{
"url": "https://example.com/blog/articolo-1/",
"lastmod": "2026-02-04T19:17:47+00:00",
"changefreq": null,
"priority": null,
"source_sitemap": "https://example.com/post-sitemap.xml"
},
{
"url": "https://example.com/chi-siamo/",
"lastmod": "2026-01-15T10:30:00+00:00",
"changefreq": "monthly",
"priority": "0.8",
"source_sitemap": "https://example.com/page-sitemap.xml"
}
]
}
/api/v1/sitemap/discover per trovare le sitemap, poi passa gli URL desiderati a questo endpoint. Se vuoi tutti gli URL, passa direttamente l'URL della sitemap indice.
/api/v1/add-urls
Aggiunge URL specifiche all'ultima scansione completata del dominio. Maphira riconosce automaticamente il dominio dalla prima URL e trova la scansione giusta. L'elaborazione avviene in background: la risposta è immediata. L'analisi AI viene applicata automaticamente se la scansione originale era stata creata con AI attiva.
{
"urls": [
"https://www.esempio.it/pagina-nuova",
"https://www.esempio.it/altra-pagina"
]
}
| Nome | Tipo | Descrizione |
|---|---|---|
urls | array | Lista di URL da aggiungere (obbligatorio, max 50). Il dominio viene riconosciuto automaticamente dalla prima URL. |
curl -X POST "https://maphira.com/api/v1/add-urls" \
-H "Authorization: Bearer maphira_xxx" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://www.esempio.it/nuova-pagina"]}'
{
"status": "success",
"message": "1 URL in fase di elaborazione"
}
/api/v1/site-urls
Analizza un sito web tramite le sue sitemap e restituisce tutte le URL con titolo, sezione e categoria. Ideale per ottenere una mappa strutturata del sito in un'unica chiamata.
{
"site_url": "https://www.esempio.it",
"max_urls": 500,
"fetch_titles": true
}
| Nome | Tipo | Descrizione |
|---|---|---|
site_url | string | URL completo del sito da analizzare (obbligatorio) |
max_urls | integer | Numero massimo di URL da restituire (default: 500, max: 5000) |
fetch_titles | boolean | Se recuperare i titoli delle pagine (default: true). Impostare a false per risposte più veloci. |
curl -X POST "https://maphira.com/api/v1/site-urls" \
-H "Authorization: Bearer maphira_xxx" \
-H "Content-Type: application/json" \
-d '{"site_url": "https://www.esempio.it"}'
{
"site_url": "https://www.esempio.it",
"total_urls": 3,
"sitemaps_found": 2,
"urls": [
{
"url": "https://www.esempio.it/blog/guida-seo-2025",
"title": "Guida SEO 2025: Tutto Quello che Devi Sapere",
"section": "blog",
"category": "Guida Seo 2025",
"lastmod": "2026-01-15T10:30:00+00:00"
},
{
"url": "https://www.esempio.it/servizi/web-design",
"title": "Servizi di Web Design",
"section": "servizi",
"category": "Web Design",
"lastmod": null
},
{
"url": "https://www.esempio.it/",
"title": "Home - Esempio",
"section": "home",
"category": null,
"lastmod": "2026-02-01T08:00:00+00:00"
}
]
}
section viene derivata dal primo segmento del path URL. La category viene derivata dal secondo segmento per sezioni come blog, news, prodotti, ecc.