Viel zu verkaufen? Stell Dutzende Artikel auf einmal mit einer einzigen CSV-Datei ein. Diese Seite ist eine verständliche Anleitung für Verkäufer und eine REST-Referenz für Entwickler und Partner – gleiche API, gleiches Konto wie in App und Website.
Eine Zeile pro Artikel mit den Spalten unten. Starte mit unserer Vorlage, damit die Spaltennamen exakt stimmen.
Schick die CSV an die API. Du bekommst eine geprüfte Vorschau zurück – welche Zeilen fertig sind und welche Fehler haben – plus ein Veröffentlichungs-Token.
Bestätige mit dem Veröffentlichungs-Token, und jede gültige Zeile geht auf deinem Konto live – mit Standort auf der Karte.
Lieber keine CSV erstellen? Tipp deine Artikel in eine Tabelle ein – Kategorie wählen, eine Zeile pro Artikel ausfüllen, Fotos anhängen und alles auf einmal veröffentlichen.
Eine einfache UTF-8-.csv-Datei mit Kopfzeile. Ein Artikel pro Zeile. Pflichtspalten müssen vorhanden und ausgefüllt sein.
| Spalte | Pflicht | Hinweise |
|---|---|---|
| title | Pflicht | Der Artikelname, den Käufer sehen. Kurz und konkret halten. |
| price | Pflicht | Eine Zahl (€ optional), z. B. 750 oder 750 €. Muss > 0 sein. |
| category | Optional | Eine der Marktplatz-Kategorien unten. Wenn leer, wird sie aus Titel/Beschreibung vorgeschlagen (oder du setzt beim Hochladen eine Standardkategorie). |
| subcategory | Optional | Optionale Unterkategorie innerhalb der Kategorie (siehe die Liste je Kategorie). Wird gegen die gewählte Kategorie geprüft. |
| description | Optional | Freitext. Zustand, Details, Lieferumfang. |
| street | Optional | Straßenname (ohne Hausnummer). Gehört zu building_number / postcode / city unten. |
| building_number | Optional | Hausnummer oder Buchstabe, z. B. 48 oder 12a – in einer eigenen Spalte. |
| postcode | Optional | Postleitzahl, z. B. 10115. |
| city | Optional | Stadt / Ort, z. B. Berlin. |
| address | Optional | Alternative zu den vier Spalten oben: eine vollständige Adresse – Straße, PLZ, Stadt (in "Anführungszeichen" setzen, wenn sie ein Komma enthält). ENTWEDER diese Spalte ODER die strukturierten Spalten verwenden; sind beide vorhanden, gewinnen die strukturierten. |
| photos | Optional | Optional. Bilddateinamen und/oder https://-URLs, getrennt durch ; (erstes = Titelbild) – oder leer lassen und die Fotos einfach in den Uploader ziehen; wir ordnen sie automatisch dem richtigen Artikel zu. Siehe Fotos unten. |
title,price,category,subcategory,description,address,photos
iPhone 14 Pro 256GB,750,Electronics,Phones,Boxed,"Hauptstraße 5, 10115 Berlin",iphone-front.jpg;iphone-back.jpg
IKEA Desk (white),45,Home & Garden,Furniture,120x60cm,"Musterweg 12, 20095 Hamburg",https://example.com/desk.jpg
Mountain bike (27.5 inch),320,Sports & Outdoors,Cycling,Aluminium frame,80331 Munich,bike-1.jpg;bike-2.jpgStrukturierte Details nötig (Marke, Größe, Farbe …)? Füge spec_<key>-Spalten hinzu – z. B. spec_brand, spec_color – und die Werte erscheinen im Datenblatt der Anzeige. Der Vorlagen-Designer baut sie für jede Kategorie automatisch.
Standard-CSVs trennen Spalten mit einem Komma. Excel und Numbers in Deutschland (und einigen anderen Regionen) exportieren aber mit Semikolon (;) – öffnet man die falsche Variante, landet jede Zeile in einer einzigen Zelle. Deshalb erkennen wir das Trennzeichen automatisch an der Kopfzeile deiner Datei, und du kannst es jederzeit überschreiben:
delimiter (,, ; oder Tab) – weglassen für automatische Erkennung.Die Spalte photos trennt Bilder normalerweise mit ;. Ist deine Datei selbst semikolongetrennt, trenne die Fotos stattdessen mit einem Komma – wir übernehmen den Tausch (und | funktioniert als Foto-Trennzeichen immer).
Im Web-Uploader musst du gar keine Dateinamen eintippen. Zieh einfach alle Fotos (oder einen ganzen Ordner, inklusive Unterordner) hinein, und wir ordnen jedes dem richtigen Artikel zu, komprimieren (hohe Qualität, viel kleiner) und laden hoch. Wir ordnen in dieser Reihenfolge zu:
photos eine Datei nennt (z. B. desk-1.jpg; ein voller Pfad wie C:\pics\desk-1.jpg geht auch – nur der Dateiname zählt).iPhone 14 Pro/…), und der ganze Ordner wird dieser Zeile zugeordnet.iphone-14-pro-front.jpg).photos wird unverändert übernommen (ideal für die REST-API, wo es keine lokalen Dateien gibt).Jede Zuordnung siehst du als Vorschaubild und kannst sie korrigieren – zieh ein Foto auf einen anderen Artikel oder ordne zu, was wir nicht sicher erkannt haben. Die mit ; getrennte Spalte photos wird weiterhin voll unterstützt; sie ist nur nicht mehr Pflicht.
Verwende in der Spalte category genau eine dieser Bezeichnungen, damit dein Artikel an der richtigen Stelle landet:
Für Entwickler und Partner, die programmatisch integrieren. Zwei Aufrufe: hochladen für eine geprüfte Vorschau + ein publish_token, dann veröffentlichen.
Jede Anfrage braucht dein Konto-Zugriffstoken (ein Supabase-JWT) im Header. Der Server leitet deine Identität aus dem Token ab – Artikel werden immer auf deinem eigenen Konto angelegt.
Authorization: Bearer <YOUR_ACCESS_TOKEN>Die Basis-URL https://api.listitfast.app dient nur der Veranschaulichung – Partner erhalten API-Host und Zugangsdaten auf Anfrage.
POST/api/v1/listings/bulk
Lade eine CSV hoch (multipart/form-data, Feld file). Liefert eine geprüfte Vorschau (erste 10 Zeilen) und ein publish_token. Noch wird nichts veröffentlicht. Optionale Formularfelder: default_category / default_subcategory (für Zeilen ohne Angabe) und delimiter (, / ; / Tab – weglassen für automatische Erkennung).
curl -X POST https://api.listitfast.app/api/v1/listings/bulk \
-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>" \
-F "file=@my-items.csv"{
"status": "preview",
"total_rows": 24,
"valid_items": 22,
"errors": [
{ "row": 5, "field": "price", "error": "Invalid price format" }
],
"preview_items": [
{
"title": "iPhone 14 Pro 256GB",
"price": "750",
"category": "Electronics",
"subcategory": "Phones",
"description": "Excellent condition - boxed",
"address": "10115 Berlin",
"status": "ready_to_publish"
}
],
"publish_token": "b1c2d3e4-5f6a-7b8c-9d0e-1f2a3b4c5d6e"
}POST/api/v1/listings/bulk/publish
Veröffentlicht die gültigen Zeilen einer Vorschau-Sitzung. Übergib das publish_token aus Schritt eins. Jeder Artikel bekommt eine ITEM-XXXXXXXX-ID und wird (falls eine Adresse angegeben ist) auf der Karte verortet.
curl -X POST https://api.listitfast.app/api/v1/listings/bulk/publish \
-H "Authorization: Bearer <YOUR_ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{ "publish_token": "b1c2d3e4-5f6a-7b8c-9d0e-1f2a3b4c5d6e", "user_id": "<YOUR_USER_ID>" }'{
"status": "published",
"items_created": 22,
"items_failed": 0,
"listing_ids": ["ITEM-A1B2C3D4", "ITEM-E5F6G7H8"]
}400 – keine .csv-Datei.401 – Zugriffstoken fehlt oder ist ungültig.404 – Veröffentlichungs-Token nicht gefunden (oder schon veröffentlicht).422 – fehlerhafter Anfrage-Body.errors zurück, damit du sie beheben und erneut hochladen kannst.Alle Fehler haben die Form { "detail": "<Grund>" }.