Anfragen senden

/v1/search nimmt dieselbe Suchanfrage entgegen, die Sie in das Suchfeld eingeben würden, plus einige Parameter. Der Endpunkt antwortet auf GET und auf POST; die Parameter sind in beiden Fällen dieselben.

Parameter

NameStandardBedeutung
queryerforderlichDie Suchzeichenfolge. Dieselbe Syntax wie auf der Website - siehe Suchsyntax.
page1Beginnt bei 1.
per_page100Bis zum Zeilenlimit Ihres Tarifs, und das gilt auch für page × per_page: Ein Tarif deckt die ersten N Zeilen einer Suchanfrage ab, und das Blättern geht nicht darüber hinaus (400 page_too_deep); /v1/account meldet den Wert als max_per_page.
snippetsaus1, um den passenden Text mitzuliefern. Verbraucht Schnipsel-Kontingent.
formatjsonEines von sechs - siehe Antwortformate.
columnsje nach FormatKommagetrennte Auswahl aus domain, url, rank, ranked, snippets.
delimiter; / TabFür csv und tsv.
headeraus1, um csv und tsv eine Kopfzeile voranzustellen.

GET

curl -H "Authorization: Bearer $KEY" \
     "https://api.publicwww.com/v1/search?query=%22angular.min.js%22&page=2&per_page=50"

Denken Sie daran, die Suchanfrage URL-zu-kodieren. Anführungszeichen, Schrägstriche und + spielen alle eine Rolle.

POST

Dieselben Parameter als JSON-Body. Verwenden Sie das, wenn die Suchanfrage lang ist oder mehrere Phrasen enthält: Eine mehrzeilige Suchanfrage in einer URL stößt bei Proxys und Clients an Längengrenzen, lange bevor der Server sich daran stört.

curl https://api.publicwww.com/v1/search \
     -H "Authorization: Bearer $KEY" \
     -H "Content-Type: application/json" \
     -d '{"query": ["\"angular.min.js\"", "\"bootstrap.min.css\""],
          "per_page": 50,
          "snippets": true}'

Ein Array von Phrasen bedeutet: alle davon - genau so, als würden sie im query-String durch Zeilenumbrüche getrennt. Im Beispiel oben enthalten 278 Websites die erste Phrase und 99 beide.

JSON-Typen werden verstanden: true funktioniert dort, wo der Query-String 1 braucht. Wird ein Parameter sowohl in der URL als auch im Body angegeben, gilt der Body.

Die Antwort

FeldBedeutung
totalWie viele Websites im gesamten Index passen. Eine echte Zählung, keine Schätzung.
total_pagestotal geteilt durch per_page, aufgerundet.
returnedWie viele Zeilen diese Seite tatsächlich enthält.
truncatedOb das Positionslimit Ihres Tarifs Zeilen entfernt hat.
took_msWie lange die Suche gedauert hat, in Millisekunden.
resultsDie Zeilen.

Eine Zeile

FeldBedeutung
domainDie Website.
urlDie Seite, auf der der Treffer gefunden wurde - bei depth:-Suchen nicht die Startseite.
rankPosition in der Rangliste; je niedriger, desto populärer. null, wenn die Website keinen Rang hat.
rankedfalse genau dann, wenn rank null ist.
snippetsNur mit snippets=1. Bis zu fünf {"text", "match"}-Paare, wobei match der Treffer ist und text der Treffer mit umgebendem Kontext.

Blättern und Massenabfragen

Blättern Sie mit page, oder fordern Sie alles auf einmal mit einem großen per_page an - bis zu max_per_page aus /v1/account, das in einem kostenpflichtigen Tarif eine Million beträgt. Einen separaten Export-Endpunkt gibt es nicht; die Antwort wird geschrieben, während sie entsteht, sodass eine Million Zeilen nicht zugleich eine Million Zeilen irgendwo im Speicher bedeuten.

Weiter Antwortformate