RobotShop APIrobotshop.com ↗
Search the RobotShop catalog via API. Get SKU, title, price, compare-at price, currency, availability, and image URL for up to 30 products per query.
What is the RobotShop API?
The RobotShop API exposes one endpoint — search_products — that queries the robotshop.com catalog and returns up to 30 matching products per call, each carrying 7 structured fields: SKU, title, price, compare-at price, currency, product URL, and image URL. The response also includes pagination metadata so callers can determine total result counts and available pages for any given search term.
curl -X GET 'https://api.parse.bot/scraper/6e677f75-f1c6-4f1a-ad3f-8d75918b500f/search_products?query=arduino' \ -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 robotshop-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: RobotShop Product Search — find products and inspect results."""
from parse_apis.robotshop_com_api import RobotShop, InputFormatInvalid
client = RobotShop()
# Search for Arduino products and inspect catalog metadata.
try:
result = client.products.search(query="arduino")
except InputFormatInvalid:
print("Invalid search query")
raise
print(f"Found {result.total_results} products across {result.total_pages} pages")
# Browse the first-page results: price, rating, and availability.
for product in result.products:
on_sale = " [SALE]" if product.is_on_sale else ""
print(f"{product.sku}: {product.title} — ${product.price}{on_sale} ⭐{product.rating} ({product.reviews_count} reviews)")
# Drill into a single product for detailed availability flags.
if result.products:
top = result.products[0]
print(f"\nTop result: {top.title}")
print(f" Brand: {top.brand}")
print(f" Price: {top.price} {top.currency} (compare at {top.compare_at_price})")
print(f" In stock: {top.inventory} units, back-orderable: {top.can_be_back_ordered}")
print(f" URL: {top.product_url}")
print("\nexercised: products.search")
Searches the RobotShop catalog for products matching a free-text query and returns the first page of results (up to 30 products, the site's own page size, in the site's relevance order). Each row is one product: SKU, title, price and compare-at price in the storefront currency (read from the site; USD on the US storefront), product and image URLs, average rating (0.0 when unrated) with review count, brand, stock quantity and availability flags. The site does not expose seller name, minimum order quantity or seller location on search results, so those are not returned. total_results is the site's reported match count and total_pages the number of result pages the site exposes for the query; this endpoint only returns the first page. A query with no matches returns an empty products array with total_results 0. Three upstream round trips per call.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Free-text search term, e.g. a product type, brand or part name. Must be non-empty. |
{
"type": "object",
"fields": {
"query": "the search term that was executed",
"products": "array of product rows from the first results page, each with sku, title, price, compare_at_price, currency, product_url, image_url, rating, reviews_count, brand, inventory, is_on_sale, is_discontinued, can_be_back_ordered, is_pre_order",
"page_size": "integer, maximum products per page (30)",
"total_pages": "integer, number of result pages the site exposes for this query",
"total_results": "integer, total matching products reported by the site"
},
"sample": {
"data": {
"query": "arduino",
"products": [
{
"sku": "RB-Ard-34",
"brand": "Arduino",
"price": 29.44,
"title": "Arduino Uno R3 USB Microcontroller",
"rating": 4.95,
"currency": "USD",
"image_url": "https://cdn.robotshop.com/media/a/ard/rb-ard-34/img/thumbnail/arduino-uno-r3-usb-microcontroller-01_300px.webp",
"inventory": 34,
"is_on_sale": false,
"product_url": "https://www.robotshop.com/products/arduino-uno-r3-usb-microcontroller",
"is_pre_order": false,
"reviews_count": 122,
"is_discontinued": false,
"compare_at_price": 29.44,
"can_be_back_ordered": true
}
],
"page_size": 30,
"total_pages": 34,
"total_results": 1737
},
"status": "success"
}
}About the RobotShop API
What the API returns
The search_products endpoint accepts a single required query parameter — a free-text string such as a product type ("wheeled robot"), a brand name, or a part number — and returns the first page of results in the site's own relevance order. Each product object in the products array contains sku, title, price, compare_at_price, currency, product_url, and image_url. The compare_at_price field reflects any original/list price the storefront shows alongside a sale price, making it straightforward to detect discounted items.
Pagination metadata
Beyond the product rows themselves, the response includes three pagination fields: page_size (fixed at 30, the site's own page size), total_results (the total count of matching products reported by the site for the query), and total_pages (how many pages exist for that result set). These fields let callers gauge coverage for a query without issuing additional requests, though the endpoint itself returns only the first page.
Coverage and scope
RobotShop stocks robotics hardware, electronics, and STEM kits. The API's search covers that full catalog — consumer robots, drone components, sensors, actuators, and related accessories. Prices are returned in the storefront currency indicated by the currency field, so callers working across regions should note which currency code appears in responses.
The RobotShop API is a managed, monitored endpoint for robotshop.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when robotshop.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 robotshop.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 drops by comparing
priceagainstcompare_at_pricefor a set of saved SKUs - Build a robotics parts comparison tool that surfaces product titles, images, and prices from a single query
- Monitor RobotShop catalog coverage for a specific brand by querying the brand name and reading
total_results - Populate an affiliate product feed with
product_urlandimage_urlfor robotics content sites - Identify sale items programmatically by flagging records where
compare_at_priceexceedsprice - Research SKU availability across product categories by querying different part-type terms
| 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 RobotShop have an official developer API?+
What does the `compare_at_price` field represent?+
compare_at_price is higher than price, the item is on sale. When they are equal or compare_at_price is absent, no discount is being advertised.Can I retrieve product reviews or detailed specifications through this API?+
Can I retrieve results beyond the first page?+
search_products endpoint returns only the first page of results (up to 30 products). The total_pages and total_results fields tell you how much more exists for a query. You can fork this API on Parse and revise it to accept a page parameter and fetch subsequent pages.