Использование API-кредита

Вам нужно авторизоваться или зарегистрироваться использовать BuiltWith API. После входа в систему здесь будет отображен ваш актуальный ключ API.

Введение

Получайте результаты в форматах XML, JSON, CSV и TSV, отображающие взаимосвязи между веб-сайтами: какие сайты связаны между собой, каким образом и как долго.

По умолчанию страницы возвращают до 1000 записей совпадений; 1000 — это также максимальное значение. Чтение всех страниц для одного домена стоит 1 кредит за каждый ключ API/домен для всех страниц, пока активен локальный кэш. Каждый запрос обновляет 10-минутное окно кэша. Истечение срока действия кэша, удаление кэша, перезапуск сервера или запрос к другому серверу могут привести к новой оплате.

Общий метод доступа следующий: -
https://api.builtwith.com/rv5/api.[xml|json|csv|tsv]?KEY=00000000-0000-0000-0000-000000000000&LOOKUP=[DOMAIN]&PAGE=1

🤖 Подсказка от ИИ-агента
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 записей совпадений. Передайте next_page в качестве PAGE, пока more_results равно true. Каждый запрос страницы использует один API-кредит. Идентификаторы могут занимать несколько страниц; объединяйте их по типу и значению, а также по домену. LOOKUP и IP-адреса оставляйте без изменений. Результаты упорядочиваются по идентификатору, а затем по домену; изменения данных в реальном времени могут смещать страницы. Идентификатор, не имеющий совпадений, считается одним результатом. Страница, на которой отображаются результаты, возвращает пустые идентификаторы. Значение 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
Домены и поддомены работают с API Relationship (не внутренние страницы)
Укажите один домен на один запрос.
Да
PAGE1
Номер страницы, начиная с 1 (по умолчанию). Используйте полученный результат. next_page в качестве страницы для следующего запроса, пока more_results Это правда.
Нет
IPyes
Загрузите данные IP-адреса сайта, это значительно увеличит количество результатов.
Нет
API Мета
ИмяПримерОписание
results24Общее количество совпадений домена и идентификатора, при этом идентификатор, не имеющий совпадений, считается одним результатом.
page1Запрошенный номер страницы.
max_per_page1000По умолчанию максимальное количество записей совпадений на странице составляет 1000. Идентификаторы могут занимать несколько страниц.
next_page2Число, которое следует указать в качестве параметра PAGE, если more_results равно true; 0, когда завершено.
more_resultstrueЭто будет верно, если будет больше результатов.
Ответы
Формат: Relationships[Relationship->Identifiers[Identifer]]
Отношение
Результаты — это ответ верхнего уровня, который идентифицирует поиск.
ИмяПримерОписание
Domainhotelscombined.comДомен, который был найден.
IdentifiersИдентификатор поясняется ниже.Объясняется ниже.
Идентификатор
Идентификаторы — это уникальные коды, которые встречаются в домене и других доменах, которые его также имеют.
ИмяПримерОписание
Typegoogle-analyticsТип идентификатора Посмотреть все типы
Value454517Значение идентификатора — обычно код идентификатора, например IP-адрес или идентификатор учетной записи.
First1368860400000Дата, когда мы впервые обнаружили этот идентификатор в эпохе мс.
Last1398860400000Дата последнего обнаружения этого идентификатора в эпохе мс.
MatchesОбъяснение соответствия приведено ниже.Объясните ниже.
Соответствовать
Совпадения — это другие домены, имеющие этот идентификатор.
ИмяПримерОписание
Domaincom-hotel.comДоменное имя совпадения.
First1398860400000Дата, когда мы впервые обнаружили это в соответствующем домене в эпоху мс.
Last1418860400000Дата последнего обнаружения этого в соответствующем домене в эпоху мс.
OverlaptrueЕсли этот домен использовал идентификатор одновременно с искомым доменом.
API-библиотеки
Node.js NPM

https://www.npmjs.com/package/builtwith-api
NPM пакет по Zach Caceres - https://github.com/zcaceres/builtwith-api

Microsoft .NET Nuget

https://www.nuget.org/packages/BuiltWith/
C# пакет по BuiltWith Pty Ltd - https://github.com/builtwith/BuiltWith-C-Client-API

Примеры кода

https://github.com/builtwith/code-examples
Примеры всех конечных точек API на разных языках.

Примеры кода

Ниже приведены примеры реализации запросов к API на разных языках программирования. Начните с PAGE=1, затем передайте next_page в качестве PAGE, пока more_results равно true:

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"
Специальные домены

Мы поддерживаем три списка для поиска доменов: «Игнорировать домены», «Игнорировать домены верхнего уровня» и «Список суффиксов BuiltWith».

Список игнорирования
TЭто наш внутренний список доменов, которые мы не индексируем. Они либо заблокированы, либо содержат слишком много вводящих в заблуждение технологий, либо слишком много поддоменов с пользовательским контентом.

Игнорировать TLD
Здесь перечислены домены верхнего уровня и суффиксы, которые BuiltWith игнорирует при индексировании веб-сайтов.

BuiltWith Список суффиксов
Это основано на Список публичных суффиксов но включает множество дополнительных записей для компаний с поддоменами, которые следует считать доменами верхнего уровня. Этот список обеспечивает лучшую видимость внутренних веб-сайтов, например, он выводит 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 и связанным с ним сервисам.