Discover/Prima API
live

Prima APIpreventivo.prima.it ↗

Look up Italian vehicle details and insurance quote eligibility by licence plate and birth date. Returns brand, model, trim, match type, and cover options.

Endpoint health
monitored
lookup_vehicle_by_plate
Checks pendingself-healing
Endpoints
1
Updated
1h ago

What is the Prima API?

The preventivo.prima.it API exposes one endpoint, lookup_vehicle_by_plate, that resolves an Italian licence plate and owner birth date into 8 vehicle fields — including brand, model, trim, and registration month — plus match outcome, available cover codes, and a Prima.it quote application ID. It mirrors the first step of Prima.it's 'Calcola il preventivo' flow for private car owners.

This call costs5 credits / call— charged only on success
Try it
Birth date of the vehicle owner, ISO date YYYY-MM-DD.
Italian licence plate, letters and digits without spaces (one shape: AB123CD). Spaces and dashes are stripped and the value is upper-cased.
→ api.parse.bot/scraper/bbe05e4e-ef98-4180-ad54-731ece471e81/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/bbe05e4e-ef98-4180-ad54-731ece471e81/lookup_vehicle_by_plate?birth_date=1985-06-15&plate_number=EX123YZ' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 preventivo-prima-it-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.

"""Walkthrough: Prima.it vehicle quote lookup — start a motor-insurance quote
from an Italian licence plate and inspect the resolved vehicle."""
from parse_apis.preventivo_prima_it_api import Prima, InvalidInput

client = Prima()

# Look up a vehicle by plate and owner birth date.
try:
    quote = client.quotes.lookup(plate_number="FG456HK", birth_date="1985-06-15")
except InvalidInput:
    print("plate or birth_date was rejected — check format")
    raise

print(f"Match type: {quote.match_type}")
print(f"Application: {quote.application_id}")

# Vehicle is Optional — null when the plate cannot be resolved.
if quote.vehicle is not None:
    v = quote.vehicle
    print(f"{v.brand} {v.model} ({v.trim})")
    print(f"Registered: {v.registration_month}, min driving age: {v.minimum_driving_age}")

print("exercised: quotes.lookup")
All endpoints · 1 totalmissing one? ·

Performs the first step of Prima.it's 'Calcola il preventivo' flow for a private owner: it submits an Italian licence plate plus the owner's birth date and returns the site's owner-match outcome together with the vehicle it resolves for that plate (registration month, brand, model, trim and minimum driving age). match_type is one of owner_match (plate and birth date match the registered owner), owner_mismatch (plate known but birth date does not match the owner) or company_or_unknown_owner (plate registered to a company, or not recognised). vehicle_type, effective_datetime, available_covers and excluded_provinces are only populated on owner_match; they are null on the other outcomes. The owner_match branch could not be exercised during the build and is unverified. vehicle is null when the site cannot resolve the plate to a vehicle. Owner identity data returned by the site on a match is deliberately not exposed. Each call opens a fresh quote application on the site (application_id); the subsequent pricing steps, which require the owner's full personal data, are not part of this API. Costs about six site round trips per call.

Input
ParamTypeDescription
birth_daterequiredstringBirth date of the vehicle owner, ISO date YYYY-MM-DD.
plate_numberrequiredstringItalian licence plate, letters and digits without spaces (one shape: AB123CD). Spaces and dashes are stripped and the value is upper-cased.
Response
{
  "type": "object",
  "fields": {
    "vehicle": "object with registration_month (YYYY-MM), brand, brand_id, model, model_id, trim, trim_id, minimum_driving_age (integer); null when the plate is not resolved to a vehicle",
    "birth_date": "birth date as submitted (YYYY-MM-DD)",
    "match_type": "owner_match | owner_mismatch | company_or_unknown_owner",
    "plate_number": "normalised plate as submitted to the site",
    "vehicle_type": "site vehicle category (e.g. CAR); only on owner_match, otherwise null",
    "application_id": "identifier of the quote application opened on the site",
    "available_covers": "array of optional cover codes offered; only on owner_match, otherwise null",
    "effective_datetime": "earliest cover start proposed by the site; only on owner_match, otherwise null",
    "excluded_provinces": "array of province names the site excludes; only on owner_match, otherwise null"
  },
  "sample": {
    "data": {
      "vehicle": {
        "trim": "Clio 1.2 75CV GPL 5 porte Wave (2014)",
        "brand": "RENAULT",
        "model": "Clio 4ª serie",
        "trim_id": "097971201407",
        "brand_id": "000062",
        "model_id": "004144",
        "registration_month": "2015-01",
        "minimum_driving_age": 18
      },
      "birth_date": "1985-06-15",
      "match_type": "owner_mismatch",
      "plate_number": "EX123YZ",
      "vehicle_type": null,
      "application_id": "14846962-96de-4869-8a01-490d559c383e",
      "available_covers": null,
      "effective_datetime": null,
      "excluded_provinces": null
    },
    "status": "success"
  }
}

About the Prima API

What the API returns

The single lookup_vehicle_by_plate endpoint accepts two required parameters: plate_number (an Italian plate in the format AB123CD, with spaces and dashes stripped automatically) and birth_date (ISO 8601, YYYY-MM-DD). It returns a vehicle object containing registration_month, brand, brand_id, model, model_id, trim, trim_id, and minimum_driving_age, along with a normalised copy of the submitted plate and birth date.

Owner match outcomes

The match_type field classifies every response into one of three states: owner_match (the birth date matches the registered owner), owner_mismatch, or company_or_unknown_owner. Several fields — vehicle_type, available_covers, effective_datetime, and excluded_provinces — are only populated on an owner_match result; they are null otherwise. The application_id field is returned on every response and can be used to reference the opened quote session on Prima.it.

Coverage and scope

The API covers privately-owned Italian-registered motor vehicles queryable through Prima.it's quote flow. Vehicle resolution (vehicle object) is attempted for every plate submitted; if the plate cannot be resolved, the vehicle field returns null. The excluded_provinces array, when present, lists province names Prima.it does not underwrite for that vehicle and owner combination.

Reliability & maintenance

The Prima API is a managed, monitored endpoint for preventivo.prima.it — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when preventivo.prima.it 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 preventivo.prima.it 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?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Validate Italian vehicle ownership before issuing a motor insurance offer by checking match_type.
  • Populate a quote form automatically using brand, model, trim, and registration_month from the vehicle object.
  • Filter leads by minimum_driving_age to ensure applicants meet underwriting requirements.
  • Retrieve available_covers to display optional cover codes to a user before they complete a Prima.it quote.
  • Use application_id to deep-link a user into an existing Prima.it quote session.
  • Screen out plates registered to companies by detecting the company_or_unknown_owner match type.
  • Identify geographically restricted risks by inspecting excluded_provinces for a given plate and owner.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Prima.it offer an official developer API?+
Prima.it does not publish a public developer API or documentation for external third-party access to its quote flow. This Parse API is the way to access that data programmatically.
What does `match_type` actually distinguish?+
match_type returns one of three values. owner_match means the birth date you submitted corresponds to the registered owner on Prima.it's records for that plate, and all fields including available_covers and effective_datetime are populated. owner_mismatch means a vehicle was found but the birth date does not match the owner. company_or_unknown_owner means the plate is registered to a company or the ownership cannot be determined. For the last two, cover-specific fields are returned as null.
Can the API retrieve full multi-step quote prices, not just the first step?+
Not currently. The API covers the first step of the Prima.it quote flow: vehicle resolution, owner match outcome, available cover codes, and an application ID. Subsequent steps — such as driver history, claims record, and final premium calculation — are not exposed. You can fork this API on Parse and revise it to add endpoints covering those later quote steps.
Does the API work for plates belonging to motorcycles or commercial vehicles?+
The API is scoped to the private-owner motor vehicle flow on Prima.it. The vehicle_type field (e.g. CAR) is returned only on owner_match results, so you can inspect it to confirm the category resolved. Coverage for non-car vehicle types depends on what Prima.it's quote flow resolves for the submitted plate. You can fork this API on Parse and revise it to target Prima.it's specialist flows for motorcycles or other vehicle categories.
What happens if a plate cannot be resolved?+
If Prima.it cannot identify a vehicle for the submitted plate, the vehicle field in the response is returned as null. All other top-level fields — including plate_number, birth_date, and match_type — are still returned.
Page content last updated . Spec covers 1 endpoint from preventivo.prima.it.
Related APIs in AutomotiveSee all →