Kupujemprodajem APIkupujemprodajem.com ↗
Access listings, seller profiles, categories, and keyword search from kupujemprodajem.com via 6 structured endpoints. Get ad details, prices, and review counts.
What is the Kupujemprodajem API?
This API covers kupujemprodajem.com — one of the largest classifieds marketplaces in the Western Balkans — across 6 endpoints. You can search listings by keyword or browse the laptop category directly with search_laptop_listings, pull full ad details including photos, description, and price via get_listing_detail, and retrieve seller profiles with positive/negative review counts and member-since dates.
curl -X GET 'https://api.parse.bot/scraper/155083df-03b9-477e-b05b-381ef0622b15/search_laptop_listings?page=1&sort=price_asc' \ -H 'X-API-Key: $PARSE_API_KEY'
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 kupujemprodajem-com-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.
from parse_apis.kupujemprodajem_scraper_api import KupujemProdajem, LaptopSort
kp = KupujemProdajem()
# Search laptop listings sorted by price
for listing in kp.listings.search_laptops(sort=LaptopSort.PRICE_ASC, limit=5):
print(listing.name, listing.price, listing.currency, listing.location_name)
# Get full details for a listing
detail = listing.refresh()
print(detail.name, detail.owner, detail.description)
for photo in detail.photos:
print(photo.path, photo.big)
# Look up the seller
seller = kp.sellers.get(user_id=str(detail.user_id))
print(seller.name, seller.reviews_positive, seller.reviews_negative, seller.user_active_ad_count)
# Browse seller's other ads via constructible
direct_seller = kp.seller(user_id=seller.user_id)
for ad in direct_seller.ads(limit=3):
print(ad.name, ad.price, ad.condition)
# Keyword search within a category
for item in kp.listings.search_by_keyword(keywords="Dell XPS", category_id="1221", limit=5):
print(item.ad_id, item.name, item.price)
# Browse categories
for cat in kp.categories.list(category_id="1221"):
print(cat.id, cat.name, cat.kind)
Search for laptop listings in the Laptops category (categoryId=1221, groupId=101). Returns paginated results with ad summaries including price, location, condition, and seller info. Sorted by date by default; pagination via page number.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| sort | string | Sorting order for results. |
{
"type": "object",
"fields": {
"ads": "array of listing ad objects",
"page": "integer current page number",
"pages": "integer total number of pages",
"total": "integer total number of matching listings",
"success": "boolean indicating API success"
},
"sample": {
"data": {
"ads": [
{
"name": "Lenovo P16V/16.0 4K 800ni/ULTRA 7-165H/32GB/1TB/RTX 500 4GB",
"ad_id": 192719696,
"price": 1600,
"user_id": 106348,
"currency": "eur",
"condition": "as-new",
"location_name": "Beograd"
}
],
"page": 1,
"pages": 817,
"total": 24502,
"success": true
},
"status": "success"
}
}About the Kupujemprodajem API
Listings and Search
search_listings_by_keyword accepts a keywords string plus an optional category_id to scope results and a page integer for pagination. It returns an ads array alongside total, pages, and page fields. search_laptop_listings is a pre-scoped variant fixed to categoryId 1221 (Laptops) and accepts the same page parameter plus a sort value — date, price_asc, price_desc, or popular — letting you order results without building category parameters manually.
Ad Detail and Seller Data
get_listing_detail takes a numeric ad_id and returns an info object with the listing's name, price, description, photos array, and nested user info. get_seller_profile takes a numeric user_id and returns name, location_name, reviews_positive, reviews_negative, created date, and the count of active ads. get_seller_ads retrieves all active listings for a given seller with the same paginated ads structure; note that some sellers configure their accounts to hide listings publicly, in which case the endpoint returns an error rather than an empty array.
Category Tree
get_categories returns the site's category hierarchy. Called without arguments it returns all top-level categories with id and name. Passing a top-level category_id — such as 969 for Tools or 1221 for Computers/Laptops — returns the sub-groups within that category. Passing a leaf-level group ID returns an empty result, so always start with the no-argument call to identify valid top-level IDs before drilling down.
The Kupujemprodajem API is a managed, monitored endpoint for kupujemprodajem.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when kupujemprodajem.com 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 kupujemprodajem.com 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?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track price trends for used laptops by paginating
search_laptop_listingssorted byprice_ascover time. - Build a seller reputation checker by combining
get_seller_profilereview fields with their active ad count. - Monitor new listings for a search term by polling
search_listings_by_keywordsorted by date and comparingtotalcounts. - Aggregate ad photos and descriptions from
get_listing_detailto populate a product comparison tool. - Map active sellers by
location_namefromget_seller_profileto visualize regional supply for a category. - Discover available sub-categories under a vertical using
get_categoriesto drive dynamic category navigation in an app. - Cross-reference a seller's
reviews_positiveandreviews_negativecounts with their current listings to flag low-trust accounts.
| 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 | 100 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 kupujemprodajem.com have an official public developer API?+
What does `get_listing_detail` return beyond the price?+
info object for a single ad: name, price, description, a photos array of image URLs, seller (user info) data, and ad metadata such as status and timestamps. You need the numeric ad_id, which you can obtain from any search or category endpoint's ads array.Can I search categories other than Laptops using the category endpoints?+
get_categories without arguments to retrieve all top-level categories and their IDs, then pass a top-level category_id to search_listings_by_keyword to scope keyword results to that vertical. The dedicated search_laptop_listings endpoint is fixed to category 1221 and cannot be redirected to other categories. You can fork this API on Parse and revise it to add a general category-scoped search endpoint for any category ID.Are sold or expired listings accessible through the API?+
search_laptop_listings, search_listings_by_keyword, and get_seller_ads — return active ads only. Historical or archived listings are not exposed. You can fork this API on Parse and revise it to add an endpoint targeting archived ad pages if that data is available on the site.What happens when a seller has disabled public listing visibility in `get_seller_ads`?+
ads array. This is a per-seller account setting on kupujemprodajem.com that cannot be overridden. You can still retrieve that seller's public profile fields — name, location, review counts, member-since date — via get_seller_profile.