برمجة تطبيقات (API) البنية التحتية للعلاقات

استخدام رصيد API

انت بحاجة الى تسجيل الدخول أو اشتراك لاستخدام واجهة برمجة التطبيقات BuiltWith. بعد تسجيل الدخول، سيتم عرض مفتاح API الفعلي الخاص بك هنا.

مقدمة

احصل على نتائج XML وJSON وCSV وTSV للعلاقات بين مواقع الويب التي توضح المواقع المرتبطة ببعضها البعض، وكيفية ارتباطها، ومدة هذا الارتباط.

تُعيد الصفحات ما يصل إلى 1000 سجل مطابقة افتراضيًا؛ وهو الحد الأقصى. تبلغ تكلفة قراءة جميع صفحات نطاق واحد رصيدًا واحدًا لكل مفتاح 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 صحيحة. كل طلب صفحة يستهلك رصيد 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
تعمل النطاقات والنطاقات الفرعية مع واجهة برمجة التطبيقات للعلاقات (وليس الصفحات الداخلية)
يرجى تقديم نطاق واحد لكل طلب.
نعم
PAGE1
رقم الصفحة، بدءًا من 1 (الرقم الافتراضي). استخدم الرقم المُعاد. next_page كصفحة للطلب التالي بينما more_results هذا صحيح.
لا
IPyes
قم بتحميل بيانات IP الخاصة بالموقع الإلكتروني، مما يؤدي إلى زيادة كمية النتائج بشكل كبير.
لا
واجهة برمجة التطبيقات ميتا
اسممثالوصف
results24إجمالي عدد عمليات مطابقة النطاق/المعرف، مع احتساب المعرف الذي لا توجد له مطابقة كنتيجة واحدة.
page1رقم الصفحة المطلوبة.
max_per_page1000يبلغ العدد الافتراضي والأقصى لعدد سجلات المطابقة لكل صفحة 1000. قد تمتد المعرفات عبر الصفحات.
next_page2الرقم الذي يتم توفيره كصفحة عندما تكون قيمة more_results صحيحة؛ 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 صحيح:

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"
المجالات الخاصة

نحتفظ بثلاث قوائم مفيدة لك عند البحث عن النطاقات: تجاهل النطاقات، وتجاهل نطاقات المستوى الأعلى، وقائمة اللواحق المبنية مع.

قائمة التجاهل
Tهذه قائمتنا الداخلية للنطاقات التي لا نفهرسها. إما أنها محظورة، أو تحتوي على تقنيات مضللة، أو نطاقات فرعية كثيرة جدًا بمحتوى من إنشاء المستخدمين.

تجاهل نطاقات المستوى الأعلى
هذه القائمة تعرض نطاقات المستوى الأعلى واللاحقات التي يتجاهلها BuiltWith عند فهرسة مواقع الويب.

BuiltWith قائمة اللواحق
وهذا يعتمد على قائمة اللواحق العامة لكنها تتضمن العديد من الإدخالات الإضافية للشركات التي لديها نطاقات فرعية يجب اعتبارها نطاقات المستوى الأعلى. توفر لنا هذه القائمة رؤية أفضل لمواقع الويب الداخلية، على سبيل المثال، فهي ترفع موقع 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/ignoretldsv1/api.json
نطاقات اللواحق (XML, JSON or TXT)
https://api.builtwith.com/suffixv1/api.json
رموز الخطأ

لاحظ أن رسائل الخطأ بهذا التنسيق لا يمكن ضمانها، ويجب على تطبيقك أيضًا أن يأخذ في الاعتبار أكواد الاستجابة غير 200 كأخطاء. ستكون خاصية البحث فارغة (json) أو غير متوفرة (xml) إذا كان الخطأ متعلقًا بالخادم. عرض جميع رموز الأخطاء المحتملة ذات التكوين الجيد.

شروط الاستخدام

ملكنا الشروط القياسية تغطية استخدام كافة واجهات برمجة التطبيقات لدينا.

بشكل عام، يمكنك استخدام واجهة برمجة التطبيقات (API) لتحسين منتجك بطرق عديدة. القيد الوحيد هو عدم إمكانية إعادة بيع البيانات كما هي أو توفير وظائف مكررة لـbuiltwith.com والخدمات المرتبطة بها.