Eine REST API, die nur alle Datensätze auf einmal zurückgibt, ist wenig nützlich – besonders wenn dein Dataset hunderte oder tausende Einträge enthält. Genau hier kommen Query-Parameter ins Spiel: Sie ermöglichen es dir, gezielt nach bestimmten Datensätzen zu suchen, Ergebnisse zu filtern, zu sortieren und seitenweise abzurufen.

In diesem Artikel erklären wir alle Query-Parameter der instantapi.io Daten-API – mit konkreten URL-Beispielen, JSON-Antworten und Hinweisen zur Kombination mehrerer Parameter. Als durchgehendes Beispiel nutzen wir einen Produktkatalog mit den Feldern id, name, kategorie, marke, preis und auf_lager.

📌 Basis-URL

Alle Beispiele in diesem Artikel gehen von folgender Basis-URL aus: https://api.instantapi.io/v1/produkte/data. Ersetze produkte durch den Slug deines eigenen Datasets. Der Header x-api-key ist bei jeder Anfrage erforderlich.

Überblick: Alle Query-Parameter

Parameter Typ Standard Beschreibung
limitinteger100Maximale Anzahl zurückgegebener Datensätze (max. 1000)
offsetinteger0Anzahl der übersprungenen Datensätze (für Pagination)
sortstringSpaltenname, nach dem sortiert wird
orderasc / descascSortierrichtung: aufsteigend oder absteigend
searchstringVolltextsuche über alle Textspalten (ILIKE)
{spalte}string / numberExakter Filter: Wert muss genau übereinstimmen
{spalte}__gtenumber / dateGrößer oder gleich (≥)
{spalte}__gtnumber / dateStrikt größer als (>)
{spalte}__ltenumber / dateKleiner oder gleich (≤)
{spalte}__ltnumber / dateStrikt kleiner als (<)
{spalte}__notstring / numberUngleich (!=) – schließt einen Wert aus
{spalte}__instringEiner von mehreren Werten (kommagetrennt)
{spalte}__containsstringTeilstring-Suche in einer einzelnen Spalte (ILIKE)

Pagination: limit und offset

Wenn dein Dataset viele Einträge enthält, willst du sie nicht alle auf einmal laden. Mit limit und offset kannst du die Ergebnisse seitenweise abrufen – das nennt sich Offset-basierte Pagination.

📖

Pagination wie ein Buch mit Lesezeichen

limit ist die Anzahl der Seiten, die du auf einmal liest. offset ist dein Lesezeichen – es sagt der API, an welcher Stelle sie anfangen soll. Wenn du 100 Produkte in Zehner-Blöcken durchblättern möchtest: erste Anfrage offset=0, zweite offset=10, dritte offset=20 – und so weiter.

Erste Seite (10 Produkte)

GET /data?limit=10&offset=0

Zweite Seite

GET /data?limit=10&offset=10

Die API-Antwort enthält immer die Felder total, limit und offset, mit denen du die Pagination steuern kannst:

{ "total": 247, "limit": 10, "offset": 10, "data": [ /* 10 Datensätze */ ] }

Mit total weißt du, wie viele Datensätze insgesamt gefunden wurden. Wenn offset + limit >= total, hast du die letzte Seite erreicht. Diese drei Felder reichen aus, um in deiner App eine vollständige Paginierungslogik zu bauen.

⚡ Performance-Tipp

Wähle limit so, dass es zur Darstellung in deiner App passt – nicht größer als nötig. Sehr große Limits (z. B. 1000+) können die Antwortzeit erhöhen und mehr Bandbreite verbrauchen.

Sortierung: sort und order

Mit sort und order bestimmst du, in welcher Reihenfolge die Datensätze zurückgegeben werden. sort nimmt den Namen einer Spalte entgegen, order bestimmt die Richtung.

Produkte nach Preis aufsteigend (günstigste zuerst)

GET /data?sort=preis&order=asc

Produkte nach Preis absteigend (teuerste zuerst)

GET /data?sort=preis&order=desc

Produkte alphabetisch nach Name

GET /data?sort=name&order=asc

Wird order weggelassen, sortiert die API standardmäßig aufsteigend (asc). Wird auch sort weggelassen, werden die Datensätze in der Reihenfolge zurückgegeben, in der sie gespeichert wurden (nach id aufsteigend).

Volltextsuche: search

Der Parameter search durchsucht alle Textspalten, die beim Dataset als „durchsuchbar" markiert sind, nach dem angegebenen Begriff. Die Suche ist nicht case-sensitiv und findet auch Teilstrings – ähnlich wie eine Datenbanksuche mit LIKE %suchbegriff%.

Nach Produkten suchen, die „kabel" im Namen oder in der Beschreibung enthalten

GET /data?search=kabel

Beispielantwort:

{ "total": 3, "limit": 50, "offset": 0, "data": [ { "id": 14, "name": "USB-C Kabel 2m", "preis": 12.99 }, { "id": 27, "name": "HDMI Kabel 5m", "preis": 18.50 }, { "id": 31, "name": "Ladekabel iPhone", "preis": 9.90 } ] }

Welche Spalten durchsucht werden, steuerst du beim Anlegen des Datasets im Dashboard unter „Durchsuchbar". Aktiviere dort nur Textspalten – Zahlen- oder Boolean-Felder macht es wenig Sinn zu durchsuchen.

Spaltenfilter: ?spaltenname=wert

Neben der Volltextsuche unterstützt die API auch exakte Filter auf einzelne Spalten. Dafür gibst du den Spaltennamen direkt als Query-Parameter an. Die Filterung ist exakt – der Wert muss vollständig übereinstimmen.

Nur Produkte der Kategorie „Elektronik"

GET /data?kategorie=Elektronik

Nur Produkte der Marke „TechPro"

GET /data?marke=TechPro

Nur Produkte, die auf Lager sind

GET /data?auf_lager=true

Boolean-Felder werden als true oder false (Kleinbuchstaben) übergeben. Zahlenwerte können ebenfalls direkt gefiltert werden:

Produkte mit einem Preis von genau 29.90

GET /data?preis=29.90

Erweiterte Filteroperatoren

Für anspruchsvollere Abfragen unterstützt die API Filteroperatoren über das __suffix-System. Du hängst den Operator einfach mit doppeltem Unterstrich an den Spaltennamen: spalte__operator=wert.

Vergleichsoperatoren: __gte, __gt, __lte, __lt

Mit diesen Operatoren kannst du Wertebereiche einschränken – ideal für Preisfilter, Datumsfelder oder numerische Kennzahlen.

# Produkte ab 50 € (≥) GET /data?preis__gte=50 # Produkte unter 100 € (strikt <) GET /data?preis__lt=100 # Preisbereich 20–80 € kombiniert GET /data?preis__gte=20&preis__lte=80
💡

Merkhilfe: gte = "greater than or equal"

gte = greater than or equal (≥) · gt = greater than (>) · lte = less than or equal (≤) · lt = less than (<). Diese Kürzel sind aus SQL und den meisten APIs bekannt.

Ausschluss-Filter: __not

Mit __not schließt du einen bestimmten Wert aus. Alle anderen Werte werden zurückgegeben.

# Alles außer der Kategorie "Zubehör" GET /data?kategorie__not=Zubehör # Produkte, die NICHT ausverkauft sind GET /data?status__not=ausverkauft

Mehrfachauswahl: __in

Mit __in kannst du mehrere Werte kommagetrennt angeben. Ein Datensatz wird zurückgegeben, wenn er einem der angegebenen Werte entspricht – ein logisches ODER innerhalb einer Spalte.

# Produkte aus "Elektronik" ODER "Zubehör" GET /data?kategorie__in=Elektronik,Zubehör # Produkte mehrerer Marken GET /data?marke__in=TechPro,SoundMax,BestBuy

Teilstring-Suche in einer Spalte: __contains

Während search alle Textspalten durchsucht, begrenzt __contains die Suche auf eine konkrete Spalte. Groß-/Kleinschreibung wird dabei ignoriert.

# Nur im Produktnamen nach "kabel" suchen GET /data?name__contains=kabel # Nur in der Beschreibung nach "wasserdicht" suchen GET /data?beschreibung__contains=wasserdicht
📌 Hinweis: Typkonvertierung

Alle Filterwerte werden als Strings übergeben. Die Datenbank übernimmt die Typkonvertierung automatisch. Bei Vergleichsoperatoren (__gte etc.) solltest du darauf achten, dass die Spalte tatsächlich einen numerischen oder Datums-Typ hat – sonst ist das Verhalten ggf. lexikografisch statt numerisch.

Parameter kombinieren

Die eigentliche Stärke der Query-Parameter zeigt sich erst, wenn du sie kombinierst. Alle Parameter können gleichzeitig in einer URL verwendet werden – sie werden als logisches UND verknüpft.

Beispiel 1: Elektronik-Produkte, auf Lager, nach Preis sortiert

GET /data?kategorie=Elektronik&auf_lager=true&sort=preis&order=asc

Beispiel 2: Suche nach „Kabel", begrenzt auf 5 Ergebnisse

GET /data?search=kabel&limit=5&sort=preis&order=asc

Beispiel 3: Alle TechPro-Produkte, zweite Seite à 20 Einträge

GET /data?marke=TechPro&limit=20&offset=20

Beispiel 4: Preisbereich + Mehrfachkategorie + Sortierung

GET /data?preis__gte=20&preis__lte=150&kategorie__in=Elektronik,Zubehör&sort=preis&order=asc

Beispiel 5: Alles auf Lager, nicht ausverkauft, Name enthält „Pro"

GET /data?auf_lager=true&status__not=ausverkauft&name__contains=Pro

Vollständige Beispielanfrage mit curl:

curl -X GET \ "https://api.instantapi.io/v1/produkte/data?kategorie__in=Elektronik,Zubehör&preis__gte=20&preis__lte=150&sort=preis&order=asc&limit=10" \ -H "x-api-key: ia_live_..."

Die Antwortstruktur verstehen

Jede erfolgreiche GET-Anfrage an /data gibt ein JSON-Objekt mit vier Feldern zurück:

{ "total": 42, // Gesamtanzahl der gefundenen Datensätze (ohne limit/offset) "limit": 10, // Der verwendete limit-Wert "offset": 0, // Der verwendete offset-Wert "data": [ // Array der Datensätze { "id": 1, "name": "Laptop Pro 15", "kategorie": "Elektronik", "marke": "TechPro", "preis": 1299.99, "auf_lager": true } ] }

Das Feld total gibt die Anzahl aller Datensätze zurück, die den Filterbedingungen entsprechen – unabhängig von limit und offset. Damit kannst du in deiner App die Gesamtanzahl der Seiten berechnen: Math.ceil(total / limit).

Feld Typ Bedeutung
totalintegerGesamtanzahl der Datensätze (mit aktiven Filtern)
limitintegerMaximale Anzahl in diesem Response
offsetintegerAnzahl übersprungener Datensätze
dataarrayDie eigentlichen Datensätze

Fazit: Mächtige Abfragen mit einfachen Parametern

Die Query-Parameter der instantapi.io API geben dir alles, was du für praxistaugliche Datenabfragen brauchst: Pagination für große Datasets, Sortierung für eine sinnvolle Darstellung, Volltextsuche für Suchfelder, exakte Spaltenfilter und – neu – erweiterte Operatoren für Wertebereiche, Mehrfachauswahl und Teilstring-Suchen. Alles kombinierbar in einer einzigen URL.

Zur Erinnerung: die Operatoren auf einen Blick – __gte / __gt / __lte / __lt für Vergleiche, __not für Ausschlüsse, __in für Mehrfachauswahl und __contains für spaltengenaue Teilstring-Suche. Wer schon einmal mit SQL oder einer anderen Abfragesprache gearbeitet hat, kennt diese Konzepte bereits.

Probiere die Query-Parameter direkt aus

Erstelle ein Dataset aus deiner Excel- oder CSV-Datei und teste Filter, Suche und Pagination mit Postman oder curl – kostenlos.

Jetzt kostenlos starten →