組み込みリレーションシップ API

APIクレジットの使用

必要がある ログイン または サインアップ BuiltWith APIを使用する. ログインすると、実際の API キーがここに表示されます。

導入

どのサイトが、どのような方法で、どのくらいの期間リンクされているかを示す、ウェブサイト間の関係性をXML、JSON、CSV、TSV形式で取得できます。

デフォルトでは、ページは最大 1,000 件の一致レコードを返します。1,000 件が最大件数です。ローカルキャッシュが有効な間、1 つのドメインのすべてのページを読み取るには、すべてのページに対して API キー/ドメインごとに 1 クレジットの費用がかかります。リクエストごとに 10 分間のキャッシュウィンドウが更新されます。キャッシュの有効期限切れ、キャッシュの削除、サーバーの再起動、またはリクエストが別のサーバーに到達すると、新たな料金が発生する場合があります。

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

🤖 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 relationships API for the domain hotelscombined.com
認証

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

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

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

  • クエリ文字列: ?KEY=00000000-0000-0000-0000-000000000000
  • HTTPヘッダー: Authorization: API 00000000-0000-0000-0000-000000000000
PAGE=1 から開始します。各レスポンスには最大 500 件の一致レコードが含まれます。more_results が true の場合、next_page を PAGE として渡します。ページリクエストごとに 1 つの API クレジットが消費されます。 識別子は複数のページにまたがる場合があります。タイプと値で結合し、ドメインで一致させます。LOOKUPとIPは変更しないでください。結果は識別子、次にドメインの順に並べられます。ライブデータの変更によりページが移動する場合があります。 一致する識別子がない場合でも、1つの結果としてカウントされます。利用可能な結果を超えるページは、空の識別子を返します。PAGEは1から2147483647までの範囲で指定する必要があります。OFFSETとSKIPは使用できません。 CSVとTSVには、一致した結果に加えてソース識別子の行が含まれ、その後にMAX、TOTAL、PAGE、NEXT PAGE、およびMORE RESULTSというテキストを含むフッターが続きます。
ドメイン取得例

JSON 単一ドメインを取得
https://api.builtwith.com/rv5/api.json?KEY=00000000-0000-0000-0000-000000000000&LOOKUP=builtwith.com&PAGE=1

XML 単一ドメインを取得
https://api.builtwith.com/rv5/api.xml?KEY=00000000-0000-0000-0000-000000000000&LOOKUP=hotelscombined.com&PAGE=1

CSV 単一ドメインを取得
https://api.builtwith.com/rv5/api.csv?KEY=00000000-0000-0000-0000-000000000000&LOOKUP=builtwith.com&PAGE=1

TSV 単一ドメインを取得
https://api.builtwith.com/rv5/api.Tsv?KEY=00000000-0000-0000-0000-000000000000&LOOKUP=builtwith.com&PAGE=1

参照
パラメータ
ルックアップには以下のGETパラメータを指定できます
名前例必須
KEY00000000-0000-0000-0000-000000000000
これはキーです。検索に使用してください。
はい
LOOKUPcnn.com
news.ycombinator.com
ドメインとサブドメインは、Relationship API で機能します(内部ページではありません)
リクエストごとにドメインを1つ指定してください。
はい
PAGE1
ページ番号(デフォルトは1から始まる)。返された値を使用します。 next_page 次のリクエストのページとして more_results それは本当です。
いいえ
IPyes
ウェブサイトの IP データを読み込むと、結果の量が大幅に増加します。
いいえ
APIメタ
名前例説明
results24ドメインと識別子の一致の総数。一致する識別子がない場合は、1つの結果としてカウントします。
page1指定されたページ番号。
max_per_page10001ページあたりのマッチングレコードのデフォルトおよび最大数は1,000件です。識別子は複数のページにまたがる場合があります。
next_page2more_resultsがtrueの場合にPAGEとして指定する数値。処理が完了した場合は0。
more_resultstrueさらに多くの結果がある場合、これは当てはまります。
回答
形式: Relationships[Relationship->Identifiers[Identifer]]
関係
結果は、ルックアップを識別する最上位レベルの応答です。
名前例説明
Domainhotelscombined.com検索されたドメイン。
Identifiers識別子については以下で説明します。以下に説明します。
識別子
識別子は、ドメインおよびそれを持つ他のドメインで見つかる一意のコードです。
名前例説明
Typegoogle-analytics識別子の種類 すべてのタイプを見る
Value454517識別子の値 - 通常は IP アドレスやアカウント ID などの識別子のコードです。
First1368860400000この識別子を最初に検出した日付(エポック ミリ秒)。
Last1398860400000この識別子を最後に検出した日付(エポック ミリ秒)。
Matches試合については以下で説明します。以下に説明します。
マッチ
一致するのは、この識別子を持つ他のドメインです。
名前例説明
Domaincom-hotel.com一致するドメイン名。
First1398860400000一致したドメインでこれを最初に検出した日付(エポック ミリ秒)。
Last1418860400000一致したドメインでこれを最後に検出した日付(エポック ミリ秒)。
Overlaptrueこのドメインがルックアップドメインと同時に識別子を使用した場合。
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 エンドポイントの例

コード例

以下は、さまざまなプログラミング言語でAPIリクエストを行うための実装例です。まずPAGE=1から始め、more_resultsがtrueの間はnext_pageをPAGEとして渡します。

var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://api.builtwith.com/rv5/api.json" +
                        "?KEY=00000000-0000-0000-0000-000000000000&LOOKUP=wayfair.com&PAGE=1"),
};
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/rv5/api.json"
params = {
    'KEY': '00000000-0000-0000-0000-000000000000',
    'LOOKUP': 'wayfair.com',
    'PAGE': 1
}
response = requests.get(url, params=params)
print(response.json())
<?php
$url = "https://api.builtwith.com/rv5/api.json";
$params = array(
    'KEY' => '00000000-0000-0000-0000-000000000000',
    'LOOKUP' => 'wayfair.com',
    'PAGE' => 1
);
$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/rv5/api.json?KEY=00000000-0000-0000-0000-000000000000&LOOKUP=wayfair.com&PAGE=1';
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/rv5/api.json" +
                    "?KEY=00000000-0000-0000-0000-000000000000&LOOKUP=wayfair.com&PAGE=1";
        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/rv5/api.json')
uri.query = URI.encode_www_form({
    'KEY' => '00000000-0000-0000-0000-000000000000',
    'LOOKUP' => 'wayfair.com',
    'PAGE' => 1
})
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/rv5/api.json?KEY=00000000-0000-0000-0000-000000000000&LOOKUP=wayfair.com&PAGE=1"
    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/rv5/api.json?KEY=00000000-0000-0000-0000-000000000000&LOOKUP=wayfair.com&PAGE=1"
特別ドメイン

ドメインを検索する際に役立つ3つのリストを用意しています。「無視するドメイン」、「無視するTLD」、「BuiltWithサフィックスリスト」です。

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

TLDを無視する
これは、BuiltWithがウェブサイトのインデックス作成時に無視するトップレベルドメインとサフィックスの一覧です。

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

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

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

利用規約

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

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