Bidorbuy APIbidorbuy.co.za ↗
Access Bob Shop product listings, seller profiles, ratings, category browsing, and search suggestions via 8 structured API endpoints covering the South African marketplace.
What is the Bidorbuy API?
The Bob Shop API exposes 8 endpoints covering product search, detailed listings, seller profiles, buyer ratings, category navigation, and homepage promotions from South Africa's bidorbuy.co.za marketplace. The search_products endpoint accepts keyword queries with filters for condition, price range, sale type, and category, returning paginated product cards with pricing in ZAR, seller names, images, and full category paths.
curl -X GET 'https://api.parse.bot/scraper/ae1b3d88-7bf8-4e47-9cd4-98b9e9a398ce/search_products?page=1&sort=DEFAULT&query=laptop&condition=NEW&max_price=50000&min_price=100&sale_type=BUY_NOW&category_id=-1' \ -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 bidorbuy-co-za-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.
"""
Bob Shop API - Browse products, sellers, and categories on South Africa's
leading marketplace.
"""
from parse_apis.bob_shop_api import BobShop, Sort, Condition, Category, Listing
client = BobShop()
# Get search suggestions for autocomplete
for suggestion in client.products.suggest(query="laptop", limit=5):
print(suggestion.suggestion_text, suggestion.type, suggestion.category_name)
# Search for laptops sorted by newest, filtering to new condition
for product in client.products.search(query="laptop", sort=Sort.NEWEST, condition=Condition.NEW, limit=5):
print(product.title, product.amount, product.location)
# Get full details for a specific product via the listings collection
detail = client.listings.get(product_id="681231273")
print(detail.title, detail.price, detail.category)
# Browse a category by constructing it from its ID
electronics = client.category(id="107")
for item in electronics.listings(limit=3):
print(item.title, item.seller.user_alias)
# Check a seller's ratings
seller = client.seller(user_id=5682327)
ratings = seller.ratings()
for period, counts in ratings.summary.items():
print(period, counts.positive, counts.negative)
Full-text search across Bob Shop listings. query matches product titles; results are paginated and sortable. Supports filtering by category, condition, price range, and sale type. Each result includes full product card data: pricing, seller info, images, and category hierarchy.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| sort | string | Sort order for results. |
| queryrequired | string | Search keywords. |
| condition | string | Item condition filter. |
| max_price | string | Maximum price filter in ZAR. |
| min_price | string | Minimum price filter in ZAR. |
| sale_type | string | Listing type filter. |
| category_id | string | Category ID to filter by. Use -1 for all categories. Discover IDs via get_category_tree. |
{
"type": "object",
"fields": {
"trade": "array of product listing objects with title, amount, url, images, seller, condition, category info",
"pageNumber": "current page number",
"totalPages": "total pages available",
"resultsPerPage": "number of results on current page"
},
"sample": {
"data": {
"trade": [
{
"url": "https://www.bobshop.co.za/laptop-desk/p/681231273",
"type": "FIXED_PRICE",
"title": "Laptop desk",
"amount": 450,
"images": [
{
"image": "https://img.bobshop.co.za/f_auto,q_auto:eco,d_notfound.png/user/5682327/7be71eb4.jpg"
}
],
"seller": {
"userId": 5682327,
"verified": false,
"userAlias": "AruMak6254"
},
"tradeId": 681231273,
"location": "Johannesburg",
"condition": "NEW",
"hotSelling": false,
"categoryBreadCrumb": "Computers & Networking/Desktop & Laptop Accessories/Laptop Accessories/Laptop Mounts",
"discountPercentage": 25
}
],
"pageNumber": 1,
"totalPages": 4395,
"resultsPerPage": 35
},
"status": "success"
}
}About the Bidorbuy API
Product Search and Listings
The search_products endpoint accepts a required query string plus optional filters: condition (NEW, SECONDHAND, REFURBISHED), sale_type (BUY_NOW or AUCTION), min_price/max_price bounds, and a category_id. Results include a trade array of product objects with title, amount, URL, images, seller identity, and category details, alongside pageNumber, totalPages, and resultsPerPage fields for cursor-free pagination. Sort order is configurable via DEFAULT, PRICE_ASC, PRICE_DESC, NEWEST, or HOT_SELLING.
Product Details and Category Browsing
get_product_details accepts a numeric product_id and returns a richer data shape: full attributes as key-value pairs, a complete category path string, an array of images, and the price in ZAR. get_category_listings lets you browse a category by its numeric ID — use get_category_tree first to retrieve the flat list of top-level category IDs and names available on the site. Both endpoints return the same paginated trade array structure as search results.
Seller Data and Ratings
get_seller_profile returns all active listings for a seller identified by seller_id, with an optional seller_name slug for URL construction. get_seller_ratings returns an array of review objects — each with productName, type (positive, neutral, or negative), and comment — plus a summary object keyed by time period (Past month, Past 3 months, Total till date) with counts for positive, neutral, negative, and dispute classifications.
Search Suggestions and Promotions
search_suggestions takes a partial query string and returns suggestion objects with suggestionText, type (WithCategory or TextOnly), and optional categoryName, categoryId, and tradeCount fields — useful for autocomplete features. get_homepage_promotions requires no inputs and returns the current Weekend Specials product array with the same trade structure as other listing endpoints.
The Bidorbuy API is a managed, monitored endpoint for bidorbuy.co.za — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bidorbuy.co.za 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 bidorbuy.co.za 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?+
- Build a price comparison tool for South African buyers by querying
search_productswithmin_price/max_pricefilters and sorting by PRICE_ASC. - Monitor seller reputation over time by polling
get_seller_ratingsand tracking the summary counts across Past month, Past 3 months, and Total till date. - Populate an autocomplete search bar using
search_suggestionsto returnsuggestionTextwith associatedcategoryNameandtradeCount. - Aggregate category-level inventory by iterating
get_category_listingsacross all IDs returned byget_category_tree. - Track weekend promotional pricing by periodically calling
get_homepage_promotionsand storing the returnedtradearray. - Build a seller comparison dashboard by pulling active listings via
get_seller_profileand cross-referencing ratings fromget_seller_ratings. - Extract detailed product attributes for structured data pipelines using the
attributesobject returned byget_product_details.
| 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 Bob Shop (bidorbuy.co.za) have an official developer API?+
What does `get_seller_ratings` return beyond a star score?+
get_seller_ratings returns individual review objects — each including the productName the review relates to, a type (positive, neutral, or negative), and the reviewer's comment. It also returns a summary object broken down by three time windows (Past month, Past 3 months, Total till date), each containing counts for positive, neutral, negative, and dispute entries. There is no single aggregate score field in the response.Can I filter search results to auctions only?+
sale_type=AUCTION to search_products. The accepted values for that parameter are BUY_NOW and AUCTION. You can combine this filter with condition, min_price, max_price, and category_id in the same request.Does the API cover completed or historical sales data?+
search_products, get_category_listings, and get_seller_profile, plus current promotions via get_homepage_promotions. Historical or completed transaction data is not exposed. You can fork this API on Parse and revise it to add an endpoint targeting completed listings if that data is available on the site.Does pagination use cursors or page numbers?+
search_products, get_category_listings, get_seller_profile) accept an optional page string parameter and return pageNumber and totalPages integers in the response. There is no cursor or offset-based pagination. get_seller_ratings and get_homepage_promotions do not paginate — they return results in a single response.