Shpock APIshpock.com ↗
Access Shpock classifieds data via API. Search listings, get item details, retrieve seller profiles, and browse categories across this UK/EU marketplace.
What is the Shpock API?
The Shpock API provides 5 endpoints covering listing search, item detail, seller profiles, seller inventory, and category discovery on the Shpock second-hand classifieds marketplace. The search_listings endpoint accepts keyword queries, category filters, price ranges, and condition filters, returning structured item objects with price, location, media, and availability flags. Results are geolocation-dependent, making category-based browsing the most reliable path to broad coverage.
curl -X GET 'https://api.parse.bot/scraper/5edad5a3-3179-4856-8042-9d695488627b/search_listings?limit=5&latitude=51.5074456&longitude=-0.1277653&is_free=False&category=el&condition=new&max_price=500&min_price=0&is_on_sale=False' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for product listings with keywords, categories, and filters. Shpock is a location-based marketplace (primarily UK/EU). Without latitude/longitude the site ranks and restricts results by the requester's detected geolocation, which can yield very few or no items outside the UK/EU; supplying latitude and longitude (both together) searches around that point exactly as the site's own Location filter does. Browsing by category or without a query typically returns more results. A valid search with no matches returns an empty items array with count 0. Paginates via an opaque cursor: pass next_cursor from one response as cursor to fetch the following page; omit it for the first page.
| Param | Type | Description |
|---|---|---|
| limit | integer | Max results per page |
| query | string | Search keyword (results are geo-dependent unless latitude/longitude are given) |
| cursor | string | Pagination cursor from next_cursor in previous response |
| is_free | boolean | Filter for free items only |
| category | string | Category ID to filter by |
| latitude | number | Latitude in decimal degrees of the point to search around; must be given together with longitude. Omit both to use the site's detected location. |
| condition | string | Item condition filter |
| longitude | number | Longitude in decimal degrees of the point to search around; must be given together with latitude. Omit both to use the site's detected location. |
| max_price | number | Maximum price filter |
| min_price | number | Minimum price filter |
| is_on_sale | boolean | Filter for items on sale |
{
"type": "object",
"fields": {
"count": "integer - number of items returned",
"items": "array of listing summaries with id, title, description, price, currency, locality, media, and boolean flags",
"limit": "integer - page size used",
"total": "integer or null - total matching items",
"offset": "integer - current offset",
"next_cursor": "string or null - cursor for next page",
"filters_applied": "object - active filters sent in the request"
},
"sample": {
"data": {
"count": 1,
"items": [
{
"id": "ajVWCRX5SFcGC-SR",
"path": "/en-gb/i/ajVWCRX5SFcGC-SR/samsung-a37-5g",
"media": [
{
"id": "6a35560915f9485706b5e1f5",
"title": "",
"width": 1152,
"height": 1536,
"__typename": "Media"
}
],
"price": 290,
"title": "Samsung A37 5g",
"is_new": false,
"is_free": false,
"is_sold": false,
"currency": "gbp",
"distance": null,
"locality": "WC2N 5DX City of Westminster",
"is_boosted": false,
"is_on_sale": false,
"description": "Samsung Galaxy A37\n\nCondition: Brand New\nStorage: 256GB\nNetwork: Unlocked",
"is_shippable": false,
"canonical_url": "https://www.shpock.com/en-gb/i/ajVWCRX5SFcGC-SR/samsung-a37-5g",
"distance_unit": null,
"original_price": null
}
],
"limit": 1,
"total": null,
"offset": 0,
"next_cursor": "PwLds3XP+H7+Mf7+2FMk8ci84jZ8zVx5m7SDf28T7eEPBpq1RtXgucm73VHHawFxPENck2i3Z9xzG5qHhn2sNsRWYm1MjJp7L+tvSY3zS58=|LEeTGtWcA52laSaZhBFSPA==",
"filters_applied": {
"price": {
"max": 500,
"min": 0
},
"category": "el",
"distance": {
"location": {
"lat": 51.5074456,
"lng": -0.1277653
}
},
"condition": "new"
}
},
"status": "success"
}
}About the Shpock API
Listing Search and Filtering
The search_listings endpoint accepts a query string alongside optional filters including category, condition ('new', 'like_new', 'good', 'fair'), min_price, max_price, and is_free. Responses include an items array where each object contains id, title, description, price, currency, locality, and media. Pagination is cursor-based: the response includes a next_cursor field you pass back as the cursor parameter on the next call. The total field may be null for some queries. Because Shpock is location-aware, keyword searches produce geo-dependent result sets; browsing by category or omitting a query tends to return more consistent volumes.
Item Detail and Seller Data
get_listing_detail takes a single item_id (sourced from search_listings results) and returns the full listing object, including extended metadata, item properties, and a nested user object containing the seller's id. That id feeds directly into get_seller_profile, which returns the seller's public profile fields: name, avgRating, numRatings, and numItemsSold. To enumerate a seller's active inventory, pass the same user_id to get_seller_listings, which supports limit and offset pagination and returns an itemsByUser object with total, limit, offset, and a summary items array.
Category Reference
get_all_categories requires no inputs and returns a static array of category objects, each with an id string (e.g. 'el' for Electronics, 'fa' for Fashion, 'hg' for Home & Garden, 'bt' for Baby & Toys) and a name. These IDs are the valid values for the category parameter in search_listings. Since the list is static, you can call it once to build a local lookup table rather than fetching it on every request.
The Shpock API is a managed, monitored endpoint for shpock.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when shpock.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 shpock.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?+
- Monitor price trends for a specific product category by polling
search_listingswithcategoryandmax_pricefilters over time. - Build a cross-platform price comparison tool by matching item titles from
search_listingsagainst listings from other second-hand marketplaces. - Aggregate seller reputation data using
avgRatingandnumRatingsfromget_seller_profilefor trust-scoring workflows. - Enumerate a seller's full active inventory using
get_seller_listingswith offset pagination to audit listing activity. - Populate a deal-alert system by searching
search_listingswithis_freeor a lowmax_pricethreshold for specific keywords. - Build a category taxonomy reference by calling
get_all_categoriesonce and mapping category IDs to human-readable names for a UI filter.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 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.
Does Shpock have an official public developer API?+
Why do keyword search results vary and sometimes return fewer items than expected?+
search_listings endpoint's keyword results are geo-dependent, so the same query value can return different item counts depending on the detected region. Browsing by category without a query string, or using broad category IDs like 'el' (Electronics) or 'fa' (Fashion), generally returns more consistent and higher-volume results.What seller data does `get_seller_profile` return?+
get_seller_profile returns the seller's public profile fields including name, avgRating, numRatings, numItemsSold, and shop details. Private data such as contact information, full transaction history, or messaging threads is not exposed. The user ID required as input comes from the user object inside a get_listing_detail response.Does the API cover sold or expired listings?+
get_seller_listings. Sold, expired, or removed listings are not retrievable through the current endpoints. You can fork this API on Parse and revise it to add an endpoint targeting completed or historical listing data if that surface becomes accessible.