リクエストの送信

/v1/searchには、検索ボックスに入力するのと同じクエリと、いくつかのパラメーターを指定します。GETとPOSTのどちらでも呼び出せ、パラメーターはどちらでも同じです。

パラメーター

名前初期値意味
query必須検索文字列。構文はウェブサイトと同じです。クエリ構文をご覧ください。
page11から始まります。
per_page100プランの行数上限まで指定できます。page × per_pageも同じ上限内に収まる必要があります。プランで取得できるのはクエリの先頭N行までで、ページ送りでその先には進めません(400 page_too_deep)。この上限は/v1/accountのmax_per_pageで確認できます。
snippetsオフ1を指定すると、一致したテキストを含めます。スニペットの利用枠を消費します。
formatjson6種類から選択します。レスポンス形式をご覧ください。
columns形式によって異なるdomain、url、rank、ranked、snippetsから、必要なものをカンマ区切りで指定します。
delimiter; / タブcsvとtsvで使用します。
headerオフ1を指定すると、csvとtsvにヘッダー行を付けます。

GET

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

クエリは必ずURLエンコードしてください。引用符、スラッシュ、+はいずれも意味を持ちます。

POST

同じパラメーターをJSONの本文で送信します。クエリが長い場合や複数のフレーズを含む場合に使います。複数行のクエリをURLに入れると、サーバー側で問題になるよりずっと前に、プロキシやクライアントの長さ制限に引っかかります。

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}'

フレーズの配列は、query文字列でフレーズを改行で区切った場合とまったく同じく、そのすべてを含むという意味になります。上の例では、1つ目のフレーズを含むサイトが278件、両方を含むサイトが99件です。

JSONの型も解釈されます。クエリ文字列で1を指定するところでは、trueも使えます。同じパラメーターがURLと本文の両方で指定された場合は、本文が優先されます。

レスポンス

フィールド意味
totalインデックス全体で一致するサイトの数。推定値ではなく実数です。
total_pagestotalをper_pageで割り、切り上げた値。
returnedこのページに実際に含まれる行数。
truncatedプランの表示順位の上限によって行が除外されたかどうか。
took_ms検索にかかった時間(ミリ秒)。
results結果の行。

行

フィールド意味
domainサイト。
url一致が見つかったページ。depth:を使った検索では、トップページとは限りません。
rankランキング上の順位。小さいほど人気があります。サイトに順位がない場合はnullです。
rankedrankがnullのときに限りfalseです。
snippetssnippets=1を指定した場合のみ。最大5つの{"text", "match"}のペアで、matchは一致した部分、textはその前後の文脈を含むテキストです。

ページ送りと大量取得

pageでページを送るか、per_pageを大きくして一度にすべてを取得します。上限は/v1/accountのmax_per_pageで、有料プランでは100万です。エクスポート専用のエンドポイントはありません。レスポンスは生成されるそばから書き出されるため、100万行を返すためにどこかのメモリーに100万行を保持することもありません。

次へ レスポンス形式