POST /api/marktplaats/listings
Price: 5 credits
Get full Marktplaats listing details by listing ID (or listing URL): title, price, description, category attributes, images, delivery and shipping options, bids, view and favorite counts, and seller information. Works across marktplaats.nl, 2dehands.be and 2ememain.be.
Fetch a single Marktplaats listing by ID (formats 'm2421746587' or 'a1519108413') or listing URL. Returns one listing with listing_title, description, price (EUR), price_type, ad_type, view_count, favorite_count, created_at (unix seconds), category/category_id/parent_category, attributes (Dutch spec key/values), delivery and shipping_options, bidding info (is_bidding_enabled, minimum_bid, bids), is_reserved/is_closed/is_buy_now_enabled, highlights, image/images and seller (id/name/type/active_years/city/latitude/longitude/profile_url). Car listings additionally carry car (brand, model, condition, construction_year, license_plate, has_nap_status, quality_marks). Listings that are no longer offered come back with is_closed true and a reduced set of fields. Use domain to pick the regional site.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)domain string — Regional Marktplaats site to query (default: "marktplaats.nl"; one of: "marktplaats.nl", "2dehands.be", "2ememain.be")listing string required — Marktplaats listing ID or a listing URL containing it (examples: "m2421746587", "a1519108413", "https://www.marktplaats.nl/v/fietsen-en-brommers/fietsen-dames-damesfietsen/m2421746587-fiets"; minLength: 1)@type string (default: "MarktplaatsListing")id string requiredurl string requiredlisting_title string nullabledescription string nullableprice number nullablecurrency string (default: "EUR")price_type string nullablead_type string nullableview_count integer nullablefavorite_count integer nullablecreated_at integer nullablecategory_id integer nullablecategory string nullablecategory_full_name string nullableparent_category_id integer nullableparent_category string nullableattributes object (default: {})* stringtraits array (default: [])delivery string nullableshipping_options array (default: [])@type string (default: "MarktplaatsListingShippingOption")carrier string nullablelabel string nullableprice string nullabledelivery_method string nullableis_bidding_enabled boolean (default: false)minimum_bid number nullablebids array (default: [])@type string (default: "MarktplaatsListingBid")id integer nullableamount number nullablecreated_at integer nullablebidder_id integer nullablebidder_name string nullableis_reserved boolean (default: false)is_closed boolean (default: false)is_buy_now_enabled boolean (default: false)average_co2_kg number nullablehighlights array (default: [])car object nullable@type string (default: "MarktplaatsListingCar")brand string nullablemodel string nullablecondition string nullableconstruction_year string nullablelicense_plate string nullablehas_nap_status boolean (default: false)quality_marks array (default: [])image string nullableimages array (default: [])seller object nullable@type string (default: "MarktplaatsListingSeller")id integer nullablename string nullabletype string nullableactive_years integer nullableactive_since string nullableprofile_url string nullablecity string nullablecountry string nullablecountry_code string nullablelatitude number nullablelongitude number nullableis_phone_hidden boolean (default: false)422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — Listing not found (well-formed but nonexistent or removed listing ID) Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.