キーワード検索APIを使って構築

導入

特定のキーワードを含むウェブサイトを検索できるAPIエンドポイント。

一般的なアクセス方法は次のとおりです -
https://api.builtwith.com/kws1/api.[json|csv]?KEY=00000000-0000-0000-0000-000000000000&KEYWORD=[KEYWORD]

🤖 AIエージェントプロンプト
Reference https://api.builtwith.com/llms.txt and
https://raw.githubusercontent.com/builtwith/builtwith-ai-sdk/refs/heads/main/README.md
Add builtwith AI api to my app as a client. Make a call to the keyword search API to find websites using the keyword perfume
認証

各検索でAPIキーをご提供いただく必要があります。エンドポイントはHTTPSのみで、キーの暗号化が行われます。 API キーを決して公開しないでください。

APIキーは
00000000-0000-0000-0000-000000000000

キーはクエリ文字列パラメータまたは HTTP ヘッダーとして指定できます。

  • クエリ文字列: ?KEY=00000000-0000-0000-0000-000000000000
  • HTTPヘッダー: Authorization: API 00000000-0000-0000-0000-000000000000
キーワード検索の例

JSON キーワードで検索
https://api.builtwith.com/kws1/api.json?KEY=00000000-0000-0000-0000-000000000000&KEYWORD=perfume

JSON 制限付き検索
https://api.builtwith.com/kws1/api.json?KEY=00000000-0000-0000-0000-000000000000&KEYWORD=perfume&LIMIT=50

JSON 次のページはオフセットを使用して表示されます
https://api.builtwith.com/kws1/api.json?KEY=00000000-0000-0000-0000-000000000000&KEYWORD=perfume&OFFSET=[last domain from previous result]

CSV キーワードで検索
https://api.builtwith.com/kws1/api.csv?KEY=00000000-0000-0000-0000-000000000000&KEYWORD=perfume

コード例

API リクエストを行うためのさまざまなプログラミング言語での実装例を次に示します。

var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://api.builtwith.com/kws1/api.json" +
                        "?KEY=00000000-0000-0000-0000-000000000000&KEYWORD=perfume"),
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
import requests
url = "https://api.builtwith.com/kws1/api.json"
params = {
    'KEY': '00000000-0000-0000-0000-000000000000',
    'KEYWORD': 'perfume'
}
response = requests.get(url, params=params)
print(response.json())
<?php
$url = "https://api.builtwith.com/kws1/api.json";
$params = array(
    'KEY' => '00000000-0000-0000-0000-000000000000',
    'KEYWORD' => 'perfume'
);
$url_with_params = $url . '?' . http_build_query($params);
$response = file_get_contents($url_with_params);
$data = json_decode($response, true);
print_r($data);
?>
const https = require('https');
const url = 'https://api.builtwith.com/kws1/api.json?KEY=00000000-0000-0000-0000-000000000000&KEYWORD=perfume';
https.get(url, (res) => {
    let data = '';
    res.on('data', (chunk) => {
        data += chunk;
    });
    res.on('end', () => {
        console.log(JSON.parse(data));
    });
}).on('error', (err) => {
    console.log('Error: ' + err.message);
});
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class BuiltWithAPI {
    public static void main(String[] args) throws Exception {
        String url = "https://api.builtwith.com/kws1/api.json" +
                    "?KEY=00000000-0000-0000-0000-000000000000&KEYWORD=perfume";
        URL obj = new URL(url);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        con.setRequestMethod("GET");
        BufferedReader in = new BufferedReader(
            new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();
        System.out.println(response.toString());
    }
}
require 'net/http'
require 'uri'
require 'json'
uri = URI('https://api.builtwith.com/kws1/api.json')
uri.query = URI.encode_www_form({
    'KEY' => '00000000-0000-0000-0000-000000000000',
    'KEYWORD' => 'perfume'
})
response = Net::HTTP.get_response(uri)
data = JSON.parse(response.body)
puts data
package main
import (
    "fmt"
    "io/ioutil"
    "net/http"
)
func main() {
    url := "https://api.builtwith.com/kws1/api.json?KEY=00000000-0000-0000-0000-000000000000&KEYWORD=perfume"
    resp, err := http.Get(url)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }
    fmt.Println(string(body))
}
curl -X GET "https://api.builtwith.com/kws1/api.json?KEY=00000000-0000-0000-0000-000000000000&KEYWORD=perfume"
参照
パラメータ
ルックアップには以下のGETパラメータを指定できます
名前必須
KEY00000000-0000-0000-0000-000000000000
これはキーです。検索に使用してください。
はい
KEYWORDperfume
wordpress
少なくとも4文字以上で、アルファベットのみを使用し、一般的なストップワードは使用しないでください。
はい
LIMIT100
返される結果の数。最小16件、最大1000件。デフォルト値は100件です。
いいえ
OFFSETzoho.com
前のページから返された最後のドメイン。キーセットのページネーションに使用されます。
いいえ
回答
形式: Keyword, Domains[], NextOffset
名前説明
Keywordperfume検索されたキーワード。
Domains["example.com","store.com"]キーワードを含むドメイン名の配列。
NextOffsetzoho.com次のページを取得するには、この値をOFFSETとして渡してください。結果がなくなると「END」を返します。
APIライブラリ
Node.js NPM

https://www.npmjs.com/package/builtwith-api
NPM パッケージby Zach Caceres - https://github.com/zcaceres/builtwith-api

Microsoft .NET Nuget

https://www.nuget.org/packages/BuiltWith/
C# パッケージby BuiltWith Pty Ltd - https://github.com/builtwith/BuiltWith-C-Client-API

コード例

https://github.com/builtwith/code-examples
複数の言語でのすべての API エンドポイントの例

特別ドメイン

ドメイン検索の際に使用する2つのリストを用意しています。無視リストとBuiltWithサフィックスリストです。

無視リスト
Tこれは、インデックスに登録しないドメインの社内リストです。これらのドメインはブロックされているか、誤解を招く技術が多すぎるか、ユーザー生成コンテンツを含むサブドメインが多すぎるため、インデックスに登録しません。

BuiltWith サフィックスリスト
これは、 パブリックサフィックスリスト ただし、トップレベルドメインと見なされるサブドメインを持つ企業の追加エントリが多数含まれています。 このリストにより、内部 Web サイトの可視性が向上します。たとえば、northernbeaches.nsw.gov.au が nsw.gov.au よりもトップ レベルに表示されるようになります。

ドメインを無視 (XML, JSON or TXT)
https://api.builtwith.com/ignoresv1/api.json
サフィックスドメイン (XML, JSON or TXT)
https://api.builtwith.com/suffixv1/api.json
エラーコード

注意: この形式のエラー メッセージは保証されません。実装では、200 以外の応答コードもエラーとして扱う必要があります。 エラーがサーバー関連の場合、Lookup プロパティは null (json) または提供されません (xml)。 すべての潜在的なエラーコードを表示する.

利用規約

私たちの 標準用語 当社のすべての API の使用をカバーします。

一般的に、API は様々な方法で製品を拡張するために使用できます。唯一の制限は、データをそのまま再販したり、builtwith.com および関連サービスに重複した機能を提供したりできないことです。