Qualit.ly API
Produktdaten, QC-Bilder und Metadaten von Weidian, Taobao und 1688. Bearer-Token-Authentifizierung, großzügige Ratenlimits, gestufte Pläne.
Erste Schritte
Alle Anfragen gehen an https://backend.qualit.ly/api/v1. Drei Schritte:
- 1
Schlüssel holen
Melde dich an und erstelle einen API-Schlüssel im Entwickler-Dashboard.
- 2
Anfrage senden
Sende deinen Schlüssel als Bearer-Token im Authorization-Header.
- 3
Daten erhalten
Erhalte JSON-Antworten mit Produktdaten und QC-Bildern.
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/weidian/7231368393Authentifizierung
Füge einen gültigen API-Schlüssel im Authorization-Header mit dem Bearer-Schema ein.
Authorization: Bearer qc_live_xxxxxxxxxxxxxxxxxxxxxxxxSchlüsselformat
Schlüssel folgen dem Format qc_{mode}_{random}, wobei mode entweder live oder test ist und random aus 32 kryptografisch zufälligen Zeichen besteht.
Schlüssel werden nur einmal bei der Erstellung angezeigt. Wir speichern nur den SHA-256-Hash, verlorene Schlüssel können daher nicht wiederhergestellt werden — widerrufen und einen neuen erstellen.
IP-Allowlist
Beschränke Schlüssel optional über das Entwickler-Dashboard auf bestimmte IPs oder CIDR-Bereiche. Anfragen von nicht gelisteten IPs erhalten einen 403. Eine leere Allowlist erlaubt alle IPs.
Ratenlimits
Zwei Kontingente: pro Minute und pro Monat. Deine Stufe wird bei jeder Anfrage aus deinem Konto gelesen — Upgrades wirken sofort — und die Limits gelten für alle deine Schlüssel.
/me und /usage authentifizieren, zählen aber nicht zum Kontingent: Nachzufragen, wo du stehst, verbraucht nicht das Kontingent, nach dem du fragst.
Header
Wird bei jeder Antwort gesendet, nicht nur bei Ablehnungen.
Bei Ratenbegrenzung
Die API gibt 429 zurück — RATE_LIMITED für den Minuten-Burst, QUOTA_EXCEEDED für das Monatskontingent — mit der Wartezeit in Sekunden in retry_after.
{
"error": {
"code": "RATE_LIMITED",
"message": "Per-minute rate limit exceeded",
"retry_after": 37
}
}Fehler
Fehler liefern einen Nicht-2xx-Status und ein Top-Level-Objekt error mit einem stabilen code und einer message. Prüfe auf den Code, nicht auf die Nachricht — Nachrichten können sich ändern.
{
"error": {
"code": "NOT_FOUND",
"message": "Product not found"
}
}Endpunkte
Die folgenden Pfade sind relativ zu https://backend.qualit.ly/api/v1. Shops sind weidian, taobao und 1688. Endpunkte ohne Chip funktionieren mit jedem Plan.
Produkt abrufen
/products/{storefront}/{listing_id}Ein einzelner Eintrag nach Shop und ID. Gibt seine Metadaten und bis zu 5 QC-Vorschau-Thumbnails zurück. Dies ist der Endpunkt, mit dem die meisten Integrationen beginnen.
Beispiel
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/weidian/7231368393Antwort
{
"data": {
"id": 482910,
"storefront": "weidian",
"listing_id": "7231368393",
"name": "AJ1 Retro High OG",
"price": "¥470.00",
"pic_url": "https://cdn.qualit.ly/covers/62743f38.jpg",
"pic_gif": null,
"product_url": "https://weidian.com/item.html?itemID=7231368393",
"qualitly_url": "https://qualit.ly/weidian/7231368393?utm_source=api&utm_content=key_7",
"qc_count": 12,
"qc_preview": [
"https://cdn.qualit.ly/qc/91c614ef.jpg",
"https://cdn.qualit.ly/qc/b66b2442.jpg"
]
}
}Produkte suchen
/products/searchDurchsuche den Katalog nach Produktnamen — die Produkt-URL wird ebenfalls abgeglichen. Es gibt keine Paginierung: Jeder Plan liefert bis zu einer festen Anzahl Ergebnisse.
Keine Paginierung. Jeder Plan liefert pro Suche bis zu einer festen Anzahl Ergebnisse; limit kann weniger anfordern, nie mehr.
Beispiel
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
"https://backend.qualit.ly/api/v1/products/search?q=jordan+1&storefront=weidian&has_qc=true&limit=10"Antwort
{
"query": "jordan 1",
"count": 10,
"limit": 10,
"max_results": 100,
"data": [
{
"id": 482910,
"storefront": "weidian",
"listing_id": "7231368393",
"name": "AJ1 Retro High OG",
"price": "¥470.00",
"pic_url": "https://cdn.qualit.ly/covers/62743f38.jpg",
"product_url": "https://weidian.com/item.html?itemID=7231368393",
"qualitly_url": "https://qualit.ly/weidian/7231368393?utm_source=api&utm_content=key_7",
"qc_count": 12,
"qc_preview": ["https://cdn.qualit.ly/qc/91c614ef.jpg"]
}
]
}Felder
Produkt-Batch
Pro+/products/batchLöst bis zu 100 Einträge in einem Aufruf auf. Jedes Element wird unabhängig aufgelöst, ein fehlendes Produkt lässt den Batch also nicht scheitern — es kommt als Fehlereintrag an derselben Position zurück.
Anfragetext
{
"items": [
{ "storefront": "weidian", "listing_id": "7231368393" },
{ "storefront": "taobao", "listing_id": "123456789" }
]
}Beispiel
curl -X POST \
-H "Authorization: Bearer qc_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"items":[{"storefront":"weidian","listing_id":"7231368393"}]}' \
https://backend.qualit.ly/api/v1/products/batchAntwort
{
"results": [
{
"data": {
"id": 482910,
"storefront": "weidian",
"listing_id": "7231368393",
"name": "AJ1 Retro High OG",
"price": "¥470.00",
"qualitly_url": "https://qualit.ly/weidian/7231368393?utm_source=api&utm_content=key_7",
"qc_count": 12,
"qc_preview": ["https://cdn.qualit.ly/qc/91c614ef.jpg"]
}
},
{ "error": { "code": "NOT_FOUND" } }
]
}Zufälliges Produkt
/products/randomEin zufälliger Eintrag mit QC-Fotos — für Showcases, Feeds oder Katalog-Stichproben. Kein Body nötig.
Beispiel
curl -X POST \
-H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/randomAntwort
{
"data": {
"id": 482910,
"storefront": "weidian",
"listing_id": "7231368393",
"name": "AJ1 Retro High OG",
"price": "¥470.00",
"pic_url": "https://cdn.qualit.ly/covers/62743f38.jpg",
"product_url": "https://weidian.com/item.html?itemID=7231368393",
"qualitly_url": "https://qualit.ly/weidian/7231368393?utm_source=api&utm_content=key_7",
"qc_count": 12,
"qc_preview": ["https://cdn.qualit.ly/qc/91c614ef.jpg"]
}
}QC-Metadaten
/qc/{storefront}/{listing_id}Die Anzahl der QC-Fotos für einen Eintrag, plus die ersten drei Thumbnails — ohne die vollständige Bildliste abzurufen.
Beispiel
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/qc/weidian/7231368393Antwort
{
"data": {
"storefront": "weidian",
"listing_id": "7231368393",
"qualitly_url": "https://qualit.ly/weidian/7231368393?utm_source=api&utm_content=key_7",
"qc_count": 12,
"thumbnails": [
"https://cdn.qualit.ly/qc/91c614ef.jpg",
"https://cdn.qualit.ly/qc/b66b2442.jpg",
"https://cdn.qualit.ly/qc/0f19ab77.jpg"
]
}
}QC-Bilder
Pro+/qc/{id}/imagesJedes indexierte QC-Foto für einen Eintrag. Nimmt die numerische Produkt-ID entgegen, oder übergib ?url= mit einem beliebigen unterstützten Produktlink und lass die API ihn auflösen.
Nach Produkt-ID
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/qc/482910/imagesNach URL
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
"https://backend.qualit.ly/api/v1/qc/0/images?url=https://weidian.com/item.html?itemID=7231368393"Antwort
{
"data": {
"id": 482910,
"storefront": "weidian",
"listing_id": "7231368393",
"qualitly_url": "https://qualit.ly/weidian/7231368393?utm_source=api&utm_content=key_7",
"qc_count": 12,
"images": [
"https://cdn.qualit.ly/qc/91c614ef.jpg",
"https://cdn.qualit.ly/qc/b66b2442.jpg"
]
}
}Der Parameter ?url= akzeptiert Produktlinks von Weidian, Taobao und 1688 sowie von jedem vom Link-Konverter unterstützten Agenten. Bilder sind immer CDN-URLs.
Kontoinfo
/meDein Konto, der Schlüssel, der die Anfrage gestellt hat, und die Stufe, die sich daraus ergibt. Nützlich als Health-Check.
Beispiel
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/meAntwort
{
"user": { "id": 12345, "username": "you" },
"key": { "id": 7, "mode": "live" },
"tier": "pro_plus"
}Nutzung
/usageWo du in beiden Ratenlimit-Kontingenten stehst, mit Reset-Zeitstempeln. Wie /me authentifiziert dieser Endpunkt, zählt aber nicht zum Kontingent — die Frage nach deinem Kontingent verbraucht es nicht.
Beispiel
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/usageAntwort
{
"tier": "pro_plus",
"key": { "id": 7, "mode": "live" },
"minute": {
"limit": 1000,
"used": 12,
"remaining": 988,
"reset_in_seconds": 37,
"reset_at": "2026-08-20T18:42:00.000Z"
},
"month": {
"limit": 500000,
"used": 1843,
"remaining": 498157,
"reset_in_seconds": 1159200,
"reset_at": "2026-09-01T00:00:00.000Z",
"bucket": 202608
}
}Felder
Code-Beispiele
curl -H "Authorization: Bearer $QUALITLY_KEY" \
"https://backend.qualit.ly/api/v1/products/search?q=jordan+1&storefront=weidian"MCP-Server
Dieselbe API wird auch als gehosteter Model Context Protocol-Server bereitgestellt, sodass Claude, Cursor, VS Code oder jeder MCP-Client Einträge und QC-Sets abfragen kann, ohne HTTP-Code zu schreiben. Dein API-Schlüssel, deine Ratenlimits und Stufenregeln gelten unverändert weiter.
Server-URL
https://backend.qualit.ly/api/mcpTransport
StreamableHTTP (POST)
Auth
Authorization: Bearer qc_live_…
Tools
Es werden nur die Tools registriert, die deine Stufe aufrufen darf — ein Basic-Schlüssel sieht also nie eines, das ihm verweigert würde.
Claude Desktop, Cursor und VS Code
Füge den Server zu deiner claude_desktop_config.json hinzu (Claude → Einstellungen → Entwickler), oder zu den MCP-Einstellungen deines Editors.
Claude Desktop
{
"mcpServers": {
"qualitly": {
"url": "https://backend.qualit.ly/api/mcp",
"headers": {
"Authorization": "Bearer qc_live_YOUR_KEY"
}
}
}
}Cursor / VS Code
{
"mcp": {
"servers": {
"qualitly": {
"url": "https://backend.qualit.ly/api/mcp",
"headers": {
"Authorization": "Bearer qc_live_YOUR_KEY"
}
}
}
}
}Clients mit Unterstützung für OAuth-Discovery — darunter Claude.ai und ChatGPT — können den fest codierten Schlüssel komplett überspringen: Eine nicht authentifizierte Anfrage antwortet mit einem WWW-Authenticate-Header, der auf die OAuth-Metadaten des Servers verweist, und der Client führt deine Nutzer stattdessen durch eine Anmeldeseite.
Schnelle Überprüfung
# List the tools your key can see
curl -X POST https://backend.qualit.ly/api/mcp \
-H "Authorization: Bearer qc_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'Pläne & Stufen
Deine Stufe wird bei jeder Anfrage aus deinem Konto ermittelt, ein Upgrade gilt also schon beim nächsten Aufruf — kein neuer Schlüssel nötig. Batch-Abfragen, vollständige QC-Bildlisten und die ?url=-Extraktion sind die einzigen Endpunkte, die mehr als Basic voraussetzen; alles andere unterscheidet sich nur im Umfang.
| Plan | / Minute | / Monat | Suchergebnisse | Batch + Bilder |
|---|---|---|---|---|
| Basic | 30 | 1,000 | 5 | |
| Early AdopterLegacy | 40 | 3,000 | 10 | |
| Pro | 300 | 25,000 | 50 | |
| Pro+ | 1,000 | 500,000 | 100 | |
| Individuell | Unbegrenzt | Unbegrenzt | 250 |
Early Adopter ist Legacy — nur bestehende Konten haben ihn, er wird nicht mehr verkauft. Brauchst du mehr als Pro+? [email protected] richtet individuelle Custom-Limits ein.