Swiftsbuygh APIswiftsbuygh.com ↗
Access SwiftBuy GH product data via API: names, GHS prices, stock, ratings, variations, and categories. 3 endpoints for catalog search and product detail.
What is the Swiftsbuygh API?
The SwiftBuy GH API exposes 3 endpoints covering the swiftsbuygh.com product catalog, returning names, GHS prices, stock levels, ratings, sales counts, image URLs, and purchasable variation options. Use search_products to paginate and filter the full catalog by keyword or category, get_product to retrieve a complete single-product record including per-option stock, and list_categories to enumerate the site's category tree for use as filter values.
curl -X GET 'https://api.parse.bot/scraper/a2afd734-4f4f-4cf5-8393-838193b61a4d/search_products?query=chain' \ -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 swiftsbuygh-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.
"""Walkthrough: SwiftBuy GH catalog — browse categories, search, and drill into product details."""
from parse_apis.swiftsbuygh_com_api import SwiftBuy, ProductNotFound
client = SwiftBuy()
# Browse available product categories.
for cat in client.categories.list(limit=5):
print(cat.name, f"({len(cat.subcategories)} subcategories)")
# Pick the first category and search for products in it.
first_cat = client.categories.list(limit=1).first()
if first_cat is not None:
for product in client.products.search(category=first_cat.name, limit=5):
print(product.name, f"GHS {product.price}", product.stock_status)
# Search by keyword and drill into the first hit's full detail.
hit = client.products.search(query="chain", limit=1).first()
if hit is not None:
detail = client.products.get(product_id=hit.product_id)
print(detail.name, f"GHS {detail.price}", detail.rating, detail.estimated_delivery)
# Show purchasable variations when present.
for var in detail.variations:
opts = ", ".join(f"{o.value} (+{o.price_modifier})" for o in var.options)
print(f" {var.label}: {opts}")
# Point lookup with error handling for an unknown id.
try:
client.products.get(product_id="doesnotexist")
except ProductNotFound:
print("product not found — expected for an invalid id")
print("exercised: categories.list / products.search / products.get / product.refresh")
Returns one page of catalog products, each with its name, price (GHS), category, stock status, rating, sales count, image URLs and variations. Optionally filters by a free-text name search and/or a category name (as listed by list_categories), and orders results with a sort key. Paginates with page and limit: page defaults to 1, limit defaults to 20 and is capped at 100; has_more is true while page < total_pages. total is the site's count of matching products. A search with no matches is a valid empty result (products: [], total: 0). One round trip per call.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based page number. |
| sort | string | Sort key forwarded to the site. Confirmed values: latest, bestselling, toprated, popular. Omitted = the site's default ordering (newest first). |
| limit | integer | Products per page, 1-100 (values above 100 are clamped). |
| query | string | Free-text product name search (case-insensitive substring match on the site). Omitted = all products. |
| category | string | Category name filter, exactly as returned by list_categories.categories[*].name (e.g. Fashion). Omitted = all categories. An unknown name yields an empty result. |
{
"type": "object",
"fields": {
"page": "current 1-based page",
"sort": "echoed sort key or null",
"limit": "effective page size after clamping",
"query": "echoed search text or null",
"total": "site-reported total number of matching products",
"category": "echoed category filter or null",
"has_more": "true when a following page exists",
"products": "array of product records: product_id, name, slug, description, price (GHS number), original_price (null unless discounted), discount_percentage, currency, category, subcategory (null when none), stock_status, items_left, rating (null when unrated), sales_count, estimated_delivery, image_count, images (absolute URLs; inline-embedded images are omitted), variations (type, label, required, options[value, price_modifier, stock]), created_at, updated_at, url",
"total_pages": "site-reported number of pages at this limit"
},
"sample": {
"data": {
"page": 2,
"sort": null,
"limit": 5,
"query": "chain",
"total": 7,
"category": null,
"has_more": false,
"products": [
{
"url": "https://swiftsbuygh.com/product/19yerrllw",
"name": "SMART WATCH + WRIST CHAIN",
"slug": "smart-watch-wrist-chain",
"price": 23,
"images": [],
"rating": null,
"category": "beauty and personal care",
"currency": "GHS",
"created_at": "2026-05-17T01:58:09.000Z",
"items_left": 1000,
"product_id": "19yerrllw",
"updated_at": "2026-08-04T22:15:20.000Z",
"variations": [],
"description": "COMBO FOR ALL",
"image_count": 1,
"sales_count": 23,
"subcategory": null,
"stock_status": "In Stock",
"original_price": null,
"estimated_delivery": "45-50 Days",
"discount_percentage": 0
}
],
"total_pages": 2
},
"status": "success"
}
}About the Swiftsbuygh API
Catalog Search and Filtering
The search_products endpoint accepts a free-text query for case-insensitive name matching and a category parameter that takes exact names as returned by list_categories. Results can be sorted by latest, bestselling, toprated, or popular. Pagination is controlled via page and limit (1–100 products per page, values above 100 are clamped). Each response includes a total count, total_pages, and a has_more flag so you can walk the full result set programmatically.
Product Records
Each item in search_products returns product_id, name, slug, price (in GHS), original_price (non-null only when a discount applies), rating, sales count, image URLs, and variation metadata. Passing a product_id to get_product returns the full single-product record, which adds items_left (remaining inventory), the currency field, and a variations array. Each variation entry includes a type, label, required flag, and an options array where each option carries a value, price_modifier, and per-option stock.
Category Tree
list_categories takes no inputs and returns the complete category hierarchy: an array of objects each with category_id, name, and a subcategories array of {subcategory_id, name} pairs. Category names from this response are the exact strings accepted by search_products's category filter. Subcategory arrays may be empty for top-level categories with no children.
Data Coverage Notes
All prices are denominated in GHS (Ghanaian cedi) as reported on the site. The rating field is null for products that have not yet been rated. The original_price field is null unless the product is currently on discount, making it straightforward to identify and filter sale items.
The Swiftsbuygh API is a managed, monitored endpoint for swiftsbuygh.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when swiftsbuygh.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 swiftsbuygh.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?+
- Build a price tracker that monitors GHS price changes and discount appearances on SwiftBuy GH products over time
- Populate a product comparison tool using price, rating, and variation data returned by get_product
- Sync a local inventory database with stock levels and items_left counts from the catalog
- Generate a category-browsing interface using the nested category tree from list_categories
- Identify bestselling or top-rated products by sorting search_products with the bestselling or toprated sort keys
- Alert customers when a specific product_id comes back into stock based on items_left transitioning from zero
- Aggregate sales count data across categories to analyze demand patterns on the platform
| 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.