Ankandet APIankandet.com ↗
Access ankandet.com's auction catalog via API: browse categories, list products with live bid prices, and fetch per-product condition and auction status.
What is the Ankandet API?
The ankandet.com API exposes 3 endpoints covering the full online auction catalog: product categories, paginated product listings with live bid state, and detailed per-product records. The get_product endpoint returns 14+ fields including current bid, next bid, bid count, auction end status, condition statement in Albanian, and all product images — giving you a complete snapshot of any lot.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/3a74aabb-9be8-439c-a178-244a600f85db/list_categories' \ -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 ankandet-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: Ankandet auction catalog — browse categories, list products, inspect details."""
from parse_apis.ankandet_com_api import Ankandet, InputNotFound
client = Ankandet()
# List available auction categories
for cat in client.categories.list(limit=5):
print(cat.title, f"({cat.products_count} products)")
# Pick the first category and list its products with condition info
cat = client.categories.list(limit=1).first()
if cat is not None:
for product in client.product_summaries.list(
category=cat.handle, include_condition=True, limit=3
):
print(product.title, product.retail_price, product.currency)
print(f" bid: {product.current_bid} / next: {product.next_bid} ({product.bid_count} bids)")
if product.condition is not None:
print(f" condition: {product.condition}")
# Drill into full detail for one product
summary = client.product_summaries.list(category="all", limit=1).first()
if summary is not None:
detail = summary.details()
print(detail.title)
print(detail.description)
print(f"images: {len(detail.images)}")
# Refresh to get the latest auction state
refreshed = detail.refresh()
print(f"current bid: {refreshed.current_bid}, ended: {refreshed.ended}")
# Point lookup by handle with error handling
try:
product = client.products.get(handle="nonexistent-xyz-000")
except InputNotFound:
print("product not found, as expected")
print("exercised: categories.list / product_summaries.list / details / refresh / products.get")
Returns the site's product categories (collections) with their handle, display title, product count and image. One round trip. The handle is the value accepted by list_products.category. The 'all' handle covers the entire catalog.
No input parameters required.
{
"type": "object",
"fields": {
"count": "number of categories returned",
"categories": "array of category records {handle, title, products_count, image}"
},
"sample": {
"data": {
"count": 10,
"categories": [
{
"image": "https://cdn.shopify.com/s/files/1/0687/2268/8225/collections/Contemporary_living_room_with_natural_light.png?v=1773949451",
"title": "Mobilje",
"handle": "mobilje",
"products_count": 5596
},
{
"image": null,
"title": "Të Gjitha Produktet",
"handle": "all",
"products_count": 135617
}
]
},
"status": "success"
}
}About the Ankandet API
Category and Product Browsing
Call list_categories to retrieve every collection on the site. Each record includes a handle, title, products_count, and image. The handle is the direct input to list_products's category parameter — the special value all covers the entire catalog. No parameters are required; a single call returns the full category list.
Paginated Product Listings with Auction State
list_products accepts a category handle, a 1-based page number, and a limit (capped at 50, or 12 when include_condition is true). Each product record in the products array carries product_id, handle, title, vendor, category_tags, retail_price (the catalog/retail price in EUR), current_bid (null if no bids have been placed yet), next_bid (minimum valid next bid), bid_count, and ended. The has_more flag signals whether additional pages exist. When include_condition is true, each record also includes condition (free-text Albanian seller statement), condition_category (heuristic classification: new / used / broken), and auction_end. Failed lookups are surfaced in bid_lookup_failed and condition_lookup_failed arrays rather than silently dropped.
Per-Product Detail
get_product takes a product handle (the numeric lot code, e.g. '291231') from list_products and returns the full record: sku, url, title, vendor, currency (EUR), retail_price, current_bid, next_bid, bid_count, ended, condition, condition_category, auction_end, image (primary), and images (all image URLs). The condition field is the seller's own description in Albanian; condition_category is a heuristic label derived from it.
The Ankandet API is a managed, monitored endpoint for ankandet.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ankandet.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 ankandet.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 live bid prices across a product category to monitor auction competitiveness over time.
- Alert buyers when
current_bidon a watched lot rises above a threshold or whenendedflips to true. - Filter lots by
condition_category(new / used / broken) to surface only items matching a buyer's quality requirement. - Compare
retail_priceagainstcurrent_bidto identify lots trading at a significant discount to catalog price. - Aggregate
products_countacross all categories fromlist_categoriesfor catalog-size reporting. - Build a bid-sniping assistant that polls
get_productnearauction_endand reports the minimumnext_bid. - Compile vendor-level inventory views by grouping
vendorfields from paginatedlist_productsresults.
| 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 ankandet.com offer an official developer API?+
What does `list_products` return for a lot that has no bids yet?+
current_bid is null for any product that has not received a bid. next_bid still reflects the minimum opening bid, bid_count is 0, and ended reflects whether the auction clock has run out. Lots whose bid data could not be fetched at all appear in the bid_lookup_failed array with bid fields set to null.How does pagination work, and what is the maximum page size?+
list_products uses 1-based page numbers via the page parameter. The limit parameter is capped at 50 products per page when include_condition is false, and at 12 when include_condition is true (fetching condition data requires an extra lookup per product). The has_more field is true when the returned page was full and further pages may exist.Does the API expose bidder identities, bid history, or seller profiles beyond the vendor name?+
vendor name string — individual bidder identities and full bid-history timelines are not included. The API covers catalog browsing and auction state as described. You can fork it on Parse and revise to add an endpoint that surfaces additional seller or bidding detail if that data becomes accessible.Is the condition information available on every product?+
condition, condition_category, auction_end) is only fetched when include_condition is set to true in list_products, or when calling get_product directly. For products where the auction page could not be loaded, the condition fields are null and the handle appears in condition_lookup_failed. Not every lot may have a seller-supplied condition statement, in which case the condition field may be empty or absent.