Anker APIanker.com ↗
Search and retrieve Anker product data including prices, variants, images, inventory, and SEO info via two REST endpoints.
What is the Anker API?
The Anker.com API covers 2 endpoints that return product listings and detailed product records from Anker's online store. Use search_products to query the catalog by keyword with sorting and cursor-based pagination, or get_product to pull a full record by product handle — including all variants, SKUs, inventory counts, price ranges, and SEO metadata.
curl -X GET 'https://api.parse.bot/scraper/cbd520fd-535d-46f5-9349-d3e3163b3784/search_products?sort=RELEVANCE&limit=5&query=charger' \ -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 anker-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: Anker product search — find chargers, compare prices, drill into details."""
from parse_apis.anker_product_search_api import Anker, Sort, ProductNotFound
client = Anker()
# Search for USB-C chargers sorted by price, capped at 5 results total.
for product in client.products.search(query="usb-c charger", sort=Sort.PRICE_ASC, limit=5):
print(product.title, product.price.min, product.price.currency, product.available)
# Drill into the first result's full details via .details() navigation.
summary = client.products.search(query="power bank", limit=1).first()
if summary:
full = summary.details()
print(full.title, full.description_html[:100])
for variant in full.variants[:3]:
print(variant.sku, variant.price, variant.quantity_available)
# Fetch a known product directly by handle.
try:
product = client.products.get(handle="a2656")
print(product.title, product.price.min, product.price.max)
for opt in product.options:
print(opt.name, opt.values)
except ProductNotFound as exc:
print(f"Product not found: {exc.handle}")
print("exercised: products.search / summary.details / products.get / ProductNotFound")Full-text search over Anker's product catalog. `query` matches product titles, descriptions, and tags. `sort` controls result ordering. Paginates via cursor (`after`). Each ProductSummary exposes a `.details()` navigation to the full Product.
| Param | Type | Description |
|---|---|---|
| sort | string | Sort order for results |
| after | string | Cursor for next page pagination (from end_cursor in previous response) |
| limit | integer | Number of results per page (1-50) |
| query | string | Search keyword |
{
"type": "object",
"fields": {
"query": "string - search query used",
"products": "array of product summary objects with id, handle, title, price, availability, variants",
"end_cursor": "string or null - cursor for fetching next page",
"total_count": "integer - total matching products",
"start_cursor": "string or null - cursor for current page start",
"has_next_page": "boolean - whether more results are available",
"has_previous_page": "boolean - whether previous page exists"
},
"sample": {
"data": {
"query": "charger",
"products": [
{
"id": "gid://shopify/Product/8350760730774",
"url": "https://www.anker.com/products/anker-nano-charger-30w-2-bundle",
"tags": [
"2410apple",
"AnkerChargers"
],
"price": {
"max": "31.98",
"min": "31.98",
"currency": "USD"
},
"title": "Anker Nano Charger (30W, 2-Pack)",
"handle": "anker-nano-charger-30w-2-bundle",
"images": [
"https://cdn.shopify.com/s/files/1/0493/9834/9974/files/SKU-04-Phantom_Black_3.png?v=1740137317"
],
"rating": null,
"vendor": "beta-anker-us",
"options": [
{
"name": "Style",
"values": [
"Phantom Black Charger * 2",
"Aurora White Charger * 2"
]
}
],
"variants": [
{
"id": "gid://shopify/ProductVariant/44465729667222",
"sku": "BUNDLE-A2147113-2",
"image": "https://cdn.shopify.com/s/files/1/0493/9834/9974/files/SKU-04-Phantom_Black_3.png?v=1740137317",
"price": "31.98",
"title": "Phantom Black Charger * 2",
"available": false,
"compare_at_price": null,
"selected_options": [
{
"name": "Style",
"value": "Phantom Black Charger * 2"
}
]
}
],
"available": true,
"description": "Small Yet Powerful...",
"product_type": "charging only",
"published_at": "2025-02-24T06:54:28Z",
"featured_image": "https://cdn.shopify.com/s/files/1/0493/9834/9974/files/SKU-04-Phantom_Black_3.png?v=1740137317"
}
],
"end_cursor": "eyJwYWdlIjoyLCJsYXN0X2lkIjo4MzI4Mzc5NTMxNDE0LCJyZXZlcnNlIjp0cnVlLCJvZmZzZXQiOjR9",
"total_count": 189,
"start_cursor": "eyJwYWdlIjoxLCJsYXN0X2lkIjo4MzUwNzYwNzMwNzc0LCJyZXZlcnNlIjp0cnVlLCJvZmZzZXQiOjB9",
"has_next_page": true,
"has_previous_page": false
},
"status": "success"
}
}About the Anker API
Endpoints and What They Return
The search_products endpoint accepts a query string and returns an array of product objects, each containing an id, handle, title, available flag, price, images, and variants. You can control sort order with the sort parameter (RELEVANCE, PRICE_ASC, or PRICE_DESC), limit results per page (1–50), and page through large result sets using the after cursor returned in the pagination object. The total_count field tells you how many products matched your query.
Product Detail Fields
The get_product endpoint takes a handle — the URL slug such as a2656 from anker.com/products/a2656 — and returns the full product record. This includes a seo object (title and description), the canonical url, product tags, a price range with min, max, and currency, an options array describing selectable attributes (e.g. color, capacity), and a variants array. Each variant exposes its own id, title, sku, price, availability, and inventory count.
Pagination and Handles
Pagination in search_products is cursor-based: pass the end_cursor from one response as the after parameter in the next request to advance pages. The handle values needed for get_product are surfaced directly in search results, so a typical workflow is to search first, collect handles, and then fetch full records individually.
The Anker API is a managed, monitored endpoint for anker.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when anker.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 anker.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 changes for Anker charging accessories by polling
get_producton specific handles - Build a product comparison tool by fetching variant-level SKUs and prices across charger lines
- Sync Anker catalog data — titles, images, and availability — into an affiliate or review site
- Monitor inventory status across all variants of a given product using the
inventoryfield inget_product - Search for products by keyword and sort by price to surface the cheapest available options
- Extract product tags and SEO metadata to classify and index Anker products in a third-party catalog
| 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 Anker have an official public developer API?+
What does the `variants` array in `get_product` include?+
id, human-readable title, sku, price, availability boolean, and an inventory count. This lets you distinguish between, say, a 65W and a 120W version of the same charger and know which are currently in stock.How does pagination work in `search_products`?+
pagination object with has_next_page, has_previous_page, end_cursor, and start_cursor. To fetch the next page, pass the end_cursor value as the after parameter in your next request. There is no offset-based paging.Does the API return customer reviews or ratings for Anker products?+
Is product availability data real-time?+
available flag in search results and the per-variant availability and inventory fields in get_product reflect the state of the Anker store at the time of each API call. There is no push or webhook mechanism, so freshness depends on how frequently you poll.