Subito API

Italy's largest classifieds as JSON: marketplace, cars and real estate

The Subito API returns Italy's largest classifieds site as clean JSON in seven actions: search for the marketplace in any category, cars/search for cars, motorcycles and vans, real_estate/search for property for sale, for rent and holiday rentals, listing for the full record of any ad, and categories, locations and suggest for the ids and terms the searches take.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a Subito endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
S
/subito/v1

7 active endpoints, on 1 and 2 credit tiers.

  • POST/subito/v1/search
  • POST/subito/v1/cars/search
  • POST/subito/v1/real_estate/search
  • POST/subito/v1/listing
  • POST/subito/v1/categories
  • POST/subito/v1/locations
  • POST/subito/v1/suggest

What Subito endpoints does ReefAPI ship?

7 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

7 endpoints

search

2 cr

Search Subito.it, Italy's largest classifieds site, by keyword and/or category.

required
optional
query, titles_only, category, ad_type, condition, shippable, price_min, price_max, region, province, town, seller_type, seller_id, urgent_only, sort, page, limit, include_sponsored, include_fuzzy_matches, include_pii, max_rotations

cars/search

2 cr

Search Subito Motori.

required
optional
vehicle_type, query, make, model, year_min, year_max, mileage_min, mileage_max, fuel, gearbox, body_type, vehicle_condition, cubic_capacity_min, cubic_capacity_max, motorcycle_type, price_min, price_max, region, province, town, seller_type, seller_id, urgent_only, sort, page, limit, include_sponsored, include_fuzzy_matches, include_pii, max_rotations

real_estate/search

2 cr

Search Subito Immobili.

required
transaction
optional
property_type, query, surface_min, surface_max, rooms_min, rooms_max, bathrooms_min, bathrooms_max, building_condition, furnished, elevator, balcony, garden, price_min, price_max, region, province, town, seller_type, seller_id, urgent_only, sort, page, limit, include_sponsored, include_fuzzy_matches, include_pii, max_rotations

listing

1 cr

The full Subito ad by id, URL or urn, in any category.

required
ad_id
optional
include_page_details, include_pii, max_rotations

categories

1 cr

Subito's category tree (macro categories and their categories, with ids and the ad types each…

required
optional
max_rotations

locations

1 cr

Find Subito's location ids.

required
optional
query, region, max_rotations

suggest

1 cr

Subito's own search suggestions for what a user is typing, each with the category Subito pred…

required
query
optional
max_rotations

Every parameter, every allowed value →

Subito API

4 of 7 endpoints, ready to run

View docs ↗

Subito ads for a keyword or category: price, free and unpublished-price flags, region, province and town, private, business or pro seller, condition, shipping and TuttoSubito cost, dates, images and description.

2 credits0 required · 4 optional
POST/subito/v1/search
ok1882 ms · 30 records · sample
{
  "ok": true,
  "meta": {
    "api": "subito",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 1881.7,
    "record_count": 30,
    "cache_hit": false
  },
  "data": {
    "listings": [
      {
        "ad_id": "660960344",
        "urn": "id:ad:a19d9075-f7a3-47fb-8a1c-7b865e73b72f:list:660960344",
        "title": "Bici donna ruota 26",
        "url": "https://www.subito.it/biciclette/bici-donna-ruota-26-milano-660960344.htm",
        "category_id": "41",
        "category": "Biciclette",
        "macro_category_id": "18",
        "ad_type": "sale",
        "ad_type_label": "In vendita",
        "price": 60,
        "currency": "EUR",
        "is_free": false,
        "price_not_published": false,
        "price_looks_placeholder": false,
        "published_or_renewed_at": "2026-09-16T15:19:49+02:00",
        "expires_at": "2027-09-16T15:19:49+02:00",
        "location": {
          "region_id": "4",
          "region": "Lombardia",
          "province_id": "8",
          "province": "Milano",
          "province_code": "MI",
          "town_id": "015146",
          "town": "Milano",
          "zone_id": null,
          "zone": null,
          "latitude": 45.466647,
          "longitude": 9.190648,
          "coordinates_precision": "town",
          "address": null,
          "address_latitude": null,
          "address_longitude": null,
          "address_withheld": false
        },
        "condition": "like_new",
        "condition_label": "Come nuovo - perfetto o ricondizionato",
        "shipping": {
          "shippable": true,
          "tuttosubito": false,
          "method": "Spedizione gestita da te",
          "cost": 10,
          "currency": "EUR",
          "package_size": null,
          "carriers": []
        },
        "is_urgent": false,
        "in_vetrina": false,
        "is_sold": false,
        "image_count": 6,
        "images": [
          "https://images.sbito.it/api/v1/sbt-ads-images-pro/images/ed/ede84cc2-7eff-4e8c-933a-f5b9b3327f53?rule=fullscreen-1x-auto",
          "https://images.sbito.it/api/v1/sbt-ads-images-pro/images/b7/b7e238d9-455a-4f9e-8582-42fd7c0a513a?rule=fullscreen-1x-auto",
          "https://images.sbito.it/api/v1/sbt-ads-images-pro/images/9a/9ae7f3b9-57d1-49ea-ac5e-eddb1196550a?rule=fullscreen-1x-auto"
        ],
        "has_360_images": false,
        "description": "Vendo bici donna ruota 26 perfetta solobda salire e pedalare da vedere",
        "attributes": [
          {
            "key": "item_shipping_type",
            "label": "Metodo di spedizione",
            "value": "Spedizione gestita da te",
            "values": null,
            "value_id": "1"
          },
          {
            "key": "item_condition",
            "label": "Condizione",
            "value": "Come nuovo - perfetto o ricondizionato",
            "values": null,
            "value_id": "20"
          },
          {
            "key": "price",
            "label": "Prezzo",
            "value": "60 €",
            "values": null,
            "value_id": "60"
          }
        ],
        "is_possible_repost": false,
        "repost_of": null,
        "matches_query_words": true
      },
      {
        "ad_id": "658274996",
        "urn": "id:ad:9a887bdf-e6ab-4604-8ced-f6401240cab9:list:658274996",
        "title": "Bici Gravel",
        "url": "https://www.subito.it/biciclette/bici-gravel-milano-658274996.htm",
        "category_id": "41",
        "category": "Biciclette",
        "macro_category_id": "18",
        "ad_type": "sale",
        "ad_type_label": "In vendita",
        "price": 1200,
        "currency": "EUR",
        "is_free": false,
        "price_not_published": false,
        "price_looks_placeholder": false,
        "published_or_renewed_at": "2026-09-16T15:18:15+02:00",
        "expires_at": "2027-08-25T14:44:13+02:00",
        "location": {
          "region_id": "4",
          "region": "Lombardia",
          "province_id": "8",
          "province": "Milano",
          "province_code": "MI",
          "town_id": "015146",
          "town": "Milano",
          "zone_id": null,
          "zone": null,
          "latitude": 45.466647,
          "longitude": 9.190648,
          "coordinates_precision": "town",
          "address": null,
          "address_latitude": null,
          "address_longitude": null,
          "address_withheld": false
        },
        "condition": "like_new",
        "condition_label": "Come nuovo - perfetto o ricondizionato",
        "shipping": {
          "shippable": false,
          "tuttosubito": false,
          "method": null,
          "cost": null,
          "currency": null,
          "package_size": null,
          "carriers": []
        },
        "is_urgent": false,
        "in_vetrina": true,
        "is_sold": false,
        "image_count": 6,
        "images": [
          "https://images.sbito.it/api/v1/sbt-ads-images-pro/images/8e/8ec004e4-30d6-4d99-96ed-11182a2426a9?rule=fullscreen-1x-auto",
          "https://images.sbito.it/api/v1/sbt-ads-images-pro/images/98/9814739e-aad3-4d08-8ae5-dc2e92130603?rule=fullscreen-1x-auto",
          "https://images.sbito.it/api/v1/sbt-ads-images-pro/images/ca/cabf854b-21fa-42aa-90b5-5265e40199df?rule=fullscreen-1x-auto"
        ],
        "has_360_images": false,
        "description": "Bici gravel AF SHIMANO GRX 2x12V\nNera\nUsata pochissimo in perfette condizioni\nNumero di velocità:\nTrasmissione SHIMAO GRX 2 x\n12 velocità, corona 30/46D,\ncassetta 11/36.\n\nForza della frenata:\nFreni a disco idraulici Shimano\nGRX BR-RX400, 160mm\ndavanti e dietro.\nRuote in alluminio, copertoni\nContinental Terra Trail\n700x40C tubeless ready.\nTelaio in alluminio, forcella in carbonio, peso bici completa\n10,6 Kg\ntaglia M.\nCarico max :110 kg\nPREZZO TRATTABILE\nVendita disponibile a mano anche nella zona di bergamo\n\nDisponibile la vendita di borse per viaggi",
        "attributes": [
          {
            "key": "price",
            "label": "Prezzo",
            "value": "1200 €",
            "values": null,
            "value_id": "1200"
          },
          {
            "key": "item_shippable",
            "label": "Disponibile alla spedizione",
            "value": "No",
            "values": null,
            "value_id": "0"
          },
          {
            "key": "bicycle_type",
            "label": "Tipologia",
            "value": "Uomo",
            "values": null,
            "value_id": "1"
          }
        ],
        "is_possible_repost": false,
        "repost_of": null,
        "matches_query_words": true
      },
      {
        "ad_id": "658854087",
        "urn": "id:ad:bb22472d-f41f-4c3b-a257-0d0fce71846f:list:658854087",
        "title": "bicicletta da donna",
        "url": "https://www.subito.it/biciclette/bicicletta-da-donna-milano-658854087.htm",
        "category_id": "41",
        "category": "Biciclette",
        "macro_category_id": "18",
        "ad_type": "sale",
        "ad_type_label": "In vendita",
        "price": 220,
        "currency": "EUR",
        "is_free": false,
        "price_not_published": false,
        "price_looks_placeholder": false,
        "published_or_renewed_at": "2026-09-16T15:18:10+02:00",
        "expires_at": "2027-08-30T12:38:25+02:00",
        "location": {
          "region_id": "4",
          "region": "Lombardia",
          "province_id": "8",
          "province": "Milano",
          "province_code": "MI",
          "town_id": "015078",
          "town": "Cisliano",
          "zone_id": null,
          "zone": null,
          "latitude": 45.446003,
          "longitude": 8.986076,
          "coordinates_precision": "town",
          "address": null,
          "address_latitude": null,
          "address_longitude": null,
          "address_withheld": false
        },
        "condition": "like_new",
        "condition_label": "Come nuovo - perfetto o ricondizionato",
        "shipping": {
          "shippable": true,
          "tuttosubito": true,
          "method": "Spedizione con TuttoSubito",
          "cost": 24.9,
          "currency": "EUR",
          "package_size": "Biciclette",
          "carriers": []
        },
        "is_urgent": false,
        "in_vetrina": true,
        "is_sold": false,
        "image_count": 6,
        "images": [
          "https://images.sbito.it/api/v1/sbt-ads-images-pro/images/e5/e5a366c3-6fa7-4f89-a97d-1f9814c326a0?rule=fullscreen-1x-auto",
          "https://images.sbito.it/api/v1/sbt-ads-images-pro/images/52/52958b0c-3035-48dc-8dc8-38f2ffb9d799?rule=fullscreen-1x-auto",
          "https://images.sbito.it/api/v1/sbt-ads-images-pro/images/eb/eb80c735-788b-4076-ae28-a821f4d8d8a5?rule=fullscreen-1x-auto"
        ],
        "has_360_images": false,
        "description": "Vendo bicicletta da donna acquistata al decathlon a euro 349,00 è come nuovo a causa inutilizzo la Vendo a euro 220.no perditempo.",
        "attributes": [
          {
            "key": "item_shipping_package_size",
            "label": "Peso del pacco",
            "value": "Biciclette",
            "values": null,
            "value_id": "50"
          },
          {
            "key": "item_shipping_type",
            "label": "Metodo di spedizione",
            "value": "Spedizione con TuttoSubito",
            "values": null,
            "value_id": "0"
          },
          {
            "key": "item_condition",
            "label": "Condizione",
            "value": "Come nuovo - perfetto o ricondizionato",
            "values": null,
            "value_id": "20"
          }
        ],
        "is_possible_repost": false,
        "repost_of": null,
        "matches_query_words": true
      }
    ],
    "count": 30,
    "total": 4086,
    "hidden_seller_rows_dropped": 0,
    "possible_reposts": 0,
    "fuzzy_matches_dropped": 0,
    "page": 1,
    "limit": 30,
    "sort_applied": "newest",
    "has_more": true,
    "keyword_match": "words",
    "filters_applied": {
      "ic": "Come nuovo",
      "q": "bici",
      "r": "Lombardia",
      "t": "In vendita"
    },
    "unpriced_excluded": false
  }
}
Real response, fetched from the live endpoint with the parameters on the left — trimmed to the first few rows, with seller names left out. Press Try it for the untrimmed response.

How the Subito API works

Subito is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 252 engines.

02
Call
POST /subito/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 or 2 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Used FIAT Pandas under 100,000 km, then everything one dealer sells

cars/search narrows the market, listing opens one ad in full, and seller_id turns that ad's dealer into a list of everything it advertises.

01search
POST/subito/v1/cars/search
{"make": "FIAT", "model": "Panda", "mileage_max": 100000, "seller_type": ["pro"]}

Price, year, mileage, fuel, gearbox and the dealer's shop name on every row. Take listings[].ad_id.

02listing
POST/subito/v1/listing
{"ad_id": "<ad_id from step 1>", "include_page_details": true}

The full record: version, power, emission class, every attribute, all images, and seller.seller_id with the shop.

03search
POST/subito/v1/cars/search
{"seller_id": "<seller_id from step 2>"}

Every vehicle that dealer has on Subito.

A filtered view of one model's used market in Italy and the dealers supplying it, with each price labelled for what it is.

request
curl -X POST https://api.reefapi.com/subito/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"bici"}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "subito",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

Five Subito results that are not what they look like

A Subito ad can show 0 € without being free, sit at the top of a cheapest-first list only because it has no price, carry a date that is only its latest renewal, or match your keyword only loosely. Each looks like an ordinary row. This engine labels or removes every one.

Search or adWhat Subito showsWhat the API returnsthe catch
Pro bike ads, price on request0 €price: null, price_not_published: true0 € is how a seller leaves the price out; free items are a separate ad type and come back as price 0 with is_free: true
'bici' cheapest firstads without a price firstunpriced_excluded: trueWithout it, the first page of a cheapest-first bike search was ads with no price; the API leaves them out of price sorts unless you set price_min
'lego', newest first303,503 results, 28 of the first 30 cars and alloy wheels ('cerchi in lega')56,518 LEGO ads, 30 of 30 on pages 1 to 3The keyword is matched as words, singular and plural alike; include_fuzzy_matches returns Subito's own looser results, flagged
'bici' most expensive first1,234,567 €price_looks_placeholder: trueRound-number fillers top the expensive end; the flag keeps them out of averages without hiding them
Any adtoday's datepublished_or_renewed_atSubito's date is the latest publication or renewal - ads first posted in earlier years carry today's date

Measured on 2026-09-16. Classified ads come and go - the searches above are dated.

What was checked, and what Subito leaves out

Measured on 2026-09-16: 80 live calls across the four main actions with no failure, 132 controlled checks including every filter, and 14 ads compared with their own pages. Four of these lines go against us.

The whole site, three search actions

Every marketplace category, cars, motorcycles and vans, and apartments, houses, land, garages, offices, rooms and holiday homes for sale and rent. Italy only, prices in EUR.

Every filter narrows, every row matches

Each filter was run against its unfiltered total in the same minute and every returned row checked: for 'bici', 177,275 ads became 16,634 in new condition and 73,487 with shipping; FIAT cars, 78,713, became 19,032 Pandas.

Checked against the ad page

On 14 ads across bikes, phones, furniture, cars, motorcycles and property for rent and sale, the title, town, seller type and photo count matched each ad's own page. The price matched on 13; on the 14th the page showed a different price for a moment and both said the same when read again.

Prices and dates are labelled

Free items, unpublished and 0 € prices and filler numbers each have their own field or flag; the date is named for what it is, the latest publication or renewal.

Speed

Median across 80 calls: a marketplace search 0.54 seconds, a vehicle search 0.50 seconds, a property search 0.52 seconds, an ad 0.37 seconds. The slowest call measured took 5.7 seconds (an ad with its page details).

Against us: fewer results than the site for some keywords

Keywords are matched as words, so totals can be lower than on Subito's site ('lego': 56,518 instead of 303,503) and irregular plurals are not matched to their singular. include_fuzzy_matches returns Subito's own matching.

Against us: private sellers are not named

A private seller's display name and street-level address are left out on purpose. Business and pro sellers are named with their shop and VAT number where Subito shows one.

Against us: no phone numbers and no sold status

Subito keeps phone numbers behind a login, and removed ads simply disappear (NOT_FOUND) rather than showing as sold.

Against us: newest-first pages can overlap

New ads are published every few seconds, so page 2 of a newest-first search can repeat an ad from page 1 that new ads pushed down. Subito shows the first 10,000 results of a search; deduplicate on ad_id.

What people build with Subito

The jobs this data is most often used for.

7

endpoints

1/2

credits per call

01

Used-car dealers and valuation tools track Italian asking prices by make, model, year, mileage and fuel with cars/search, with Km0 and new cars kept apart from used ones.

02

Property analysts follow rents and sale prices, surface and rooms by province and town with real_estate/search, separating private owners from agencies.

03

Resale and pricing tools compare second-hand prices by condition and shipping, keeping free items, unpublished prices and loosely matched rows out of the averages.

04

Market-mapping teams list every ad of a pro shop or business seller with seller_id, without collecting private sellers' names or addresses.

What Subito data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 252 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/subito/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"bici"}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/subito/v1/search",
    headers={"x-api-key": REEF_KEY},
    json={
  "query": "bici"
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Subito.

Get a free key →
Which parts of Subito does the API cover?

The whole site in three search actions. search covers every marketplace category with Subito's own category ids - 177,275 ads for 'bici' on 2026-09-16. cars/search covers cars, motorcycles and vans - 78,713 FIAT cars and 16,144 Ducati motorcycles that day. real_estate/search covers apartments, houses, land, garages, offices, rooms and holiday homes for sale and rent - 3,164 apartments for rent in the province of Milan. listing returns the full ad from any category. categories lists Subito's 45 categories, locations finds region, province and town ids, and suggest returns Subito's own search suggestions. Subito is Italian only; prices are in EUR.

Is a private seller's name or address included?

No. A private seller's display name is left out, and so is the street address with exact coordinates that some ads (mostly property) carry; the town and its coordinates stay. Business and pro sellers are returned with their name, shop and VAT number where Subito shows one. Subito does not show phone numbers to visitors, so the API does not return them.

Why does a keyword search return fewer results than Subito's site?

Subito matches short words loosely: on the site the newest 30 results for 'lego' were mostly cars with 'lega' alloy wheels, out of 303,503. The API matches your keyword as words, singular and plural alike, so 'lego' returns 56,518 LEGO ads and pages 1 to 3 were full of them; 'giochi' also finds 'gioco' and 'sedia' finds 'sedie'. Spelling mistakes still return results (checked on 'iphnoe', 'divanno' and four more). Any row that still contains none of your words is removed and counted in fuzzy_matches_dropped. Set include_fuzzy_matches to get Subito's own matching with a matches_query_words flag on every row.

How do I tell a free item, an unpublished price and a placeholder apart?

By the flags on every row. A free item has price 0 and is_free true. An ad without a price, or showing 0 €, has price null and price_not_published true. A filler number such as 1,234,567 € keeps its value with price_looks_placeholder true.

Do the filters really narrow the results?

Each one was checked live on 2026-09-16: the filtered total had to be smaller than the unfiltered one, and every returned row had to match. For 'bici' (177,275 ads): new condition 16,634, shipping available 73,487, pro sellers 7,062, Lombardy 35,052, between 100 and 300 € 39,094. For FIAT cars (78,713): Panda 19,032, diesel 30,982, automatic 4,295, 2018 to 2020 10,474. For apartments for rent in Milan (3,164): furnished 2,449, 50 to 80 m² 1,543, three rooms or more 882.

What is the difference between private, business and pro sellers?

Subito has three kinds of advertiser, and the API keeps them apart. private is a person. pro is a verified shop with a shop page. business is an account registered as a company, often with a VAT number, but without a verified shop - Subito's own 'private' filter mixes these in with people; seller_type lets you ask for each separately (1,267 business ads for 'bici' on 2026-09-16).

Are 'In vetrina' and sponsored ads marked?

Ads that paid for 'In vetrina' appear in their normal place in the results with in_vetrina true; urgent ads carry is_urgent. Subito's separate gallery of promoted ads is not mixed in - ask for include_sponsored and it comes back apart under sponsored[].

What does Subito not publish?

Phone numbers, private sellers' real names, a sold status (removed ads return NOT_FOUND), view counts, stock and barcodes. Seller ratings are not part of the search results; listing with include_page_details adds them where the seller has reviews.

What is the Subito API?

Subito API is a ReefAPI endpoint group for italy's largest classifieds: marketplace, cars and real estate as json. It returns live JSON through POST requests under /subito/v1.

Is the Subito API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Subito calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Subito login or account?

No login to Subito is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Subito data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Subito API use?

Subito actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Subito from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call subito actions with the same key, credit pool and JSON envelope used by normal REST requests.

16 Classifieds & Second-hand APIs on the same key

One key, one credit pool, one response envelope. If you are pulling Subito, you are one call away from the rest of the category — no second contract, no second integration.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 251 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-16.