Trust API

API Credit Usage

You need to login or signup to use the BuiltWith API. After logging in your actual API key will be shown here.

Introduction

The BuiltWith Trust API provides you with an overview of a website domain - allowing you to make the call on how much it can be trusted. We use attributes such as technology spend, time, relationships with other sites, current response, keywords and undisclosed methods to determine the trustworthiness of a domain.

The general access method is as follows:
https://api.builtwith.com/trustv1/api.[xml|json]?KEY=00000000-0000-0000-0000-000000000000&LOOKUP=[DOMAIN]

Authentication

You must provide your API key in each lookup. Our endpoints are HTTPS only, providing key encryption. Never expose your API key.

Your API Key is
00000000-0000-0000-0000-000000000000

Get Domain Example

XML Get Domain
https://api.builtwith.com/trustv1/api.xml?KEY=00000000-0000-0000-0000-000000000000&LOOKUP=hotelscombined.com

JSON Get Domain
https://api.builtwith.com/trustv1/api.json?KEY=00000000-0000-0000-0000-000000000000&LOOKUP=builtwith.com

JSON Get additional live lookup
https://api.builtwith.com/trustv1/api.json?KEY=00000000-0000-0000-0000-000000000000&LOOKUP=builtwith.com&LIVE=yes

Best Practices

If you are providing a list of newly registered domains always use the &LIVE=true option as our DB will always return suspect. If you are working through a large list provide &LIVE=true only if the status comes back as 'needLive' (2 in json) - this will increase throughput performance.

Code Examples

Here are implementation examples in different programming languages for making API requests:

var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://api.builtwith.com/trustv1/api.json" +
   "?KEY=00000000-0000-0000-0000-000000000000&LOOKUP=wayfair.com.com&LIVE=yes&WORDS=gold,diamonds"),
};
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/trustv1/api.json"
params = {
    'KEY': '00000000-0000-0000-0000-000000000000',
    'LOOKUP': 'wayfair.com.com',
    'LIVE': 'yes',
    'WORDS': 'gold,diamonds'
}
response = requests.get(url, params=params)
print(response.json())
<?php
$url = "https://api.builtwith.com/trustv1/api.json";
$params = array(
    'KEY' => '00000000-0000-0000-0000-000000000000',
    'LOOKUP' => 'wayfair.com.com',
    'LIVE' => 'yes',
    'WORDS' => 'gold,diamonds'
);
$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/trustv1/api.json?KEY='+
  '00000000-0000-0000-0000-000000000000&LOOKUP=wayfair.com.com&LIVE=yes&WORDS=gold,diamonds';
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/trustv1/api.json" +
"?KEY=00000000-0000-0000-0000-000000000000&LOOKUP=wayfair.com.com&LIVE=yes&WORDS=gold,diamonds";
        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/trustv1/api.json')
uri.query = URI.encode_www_form({
    'KEY' => '00000000-0000-0000-0000-000000000000',
    'LOOKUP' => 'wayfair.com.com',
    'LIVE' => 'yes',
    'WORDS' => 'gold,diamonds'
})
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/trustv1/api.json?"+
"KEY=00000000-0000-0000-0000-000000000000&LOOKUP=wayfair.com.com&LIVE=yes&WORDS=gold,diamonds"
    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/trustv1/api.json?KEY=00000000-0000-0000-0000-000000000000&LOOKUP=wayfair.com.com&LIVE=yes&WORDS=gold,diamonds"
Reference
GET Request Parameters
NameExamplesRequired
KEY00000000-0000-0000-0000-000000000000
This is your key, use this for lookups.
Yes
LOOKUPcnn.com
hotelscombined.com
Trust API supports subdomains and internal pages but only using the LIVE lookup feature of Trust API.
Yes
LIVEyes
Performs a live lookup of the website in question. This slows down the response. A result with a status of 'needLive' requires the LIVE option to determine if the website is suspect or not. Live lookups slow down the response of the API, you should consider calling this if the non-LIVE lookup response status is 'needLive'.
No
Response Object
Result - Result is the root object returned from the lookup
NameExampleDescription
Domainhotelscombined.comThe domain/subdomain/url that was looked up.
Statusoksuspect (1 in json) - the website is suspect because of one of the attributes we found
ok (0 in json) - we think this website is ok
needLive (2 in json) - lookup this site again with &LIVE=yes parameter for a more detailed response.
LiveRecordLiveRecord explained belowResult from doing a live lookup on the domain.
DBRecordDBRecord explained below.Result from our database.
DBRecord
DBRecord - This contains the results from performing a lookup in our DB for the domain.
NameExampleDescription
EarliestRecord1436584145epoch seconds time for the earliest technology record for the domain - checked DBIndexed is true first.
LatestUpdate1543584145epoch seconds time since we updated a technology - checked DBIndexed is true first.
PremiumTechs5The amount of premium techs we found on the website.
LiveTechsfalsetrue if the website has any currently live technologies tracked.
AffiliateLinksfalseIf the site has any affiliate program advertising systems on it currently.
PaymentOptionstrueIf the site has a payment provider of mentions a payment system.
EcommercetrueIf the site has an eCommerce technology or cart / buy links.
ParkedfalseIf the site is using any parked techs or mentions parked.
Spend80Average monthly spend across the entire domain.
EstablishedtrueIf the website is older than 1 year old from our technology indexing.
DBIndexedtrueIf this website is in our DB - if false the site is suspect.
LiveRecord
LiveRecord - This contains the results from performing a live lookup on the domain.
NameExampleDescription
LookupErrorThe remote name could not be resolvedAny error from trying to lookup the website.
WebsiteErrorWebsite Lookup FailedSimilar to LookupError except could be blank HTML response.
Spend0Average monthly spend from the webpage technologies found.
ParkedfalseIf the site is using any parked techs or mentions parked.
AffiliateLinkstrueIf the site has affiliate advertising.
PaymentOptionstrueIf the site has a payment provider of mentions a payment system.
EcommercetrueIf the site has an eCommerce technology or cart / buy links.
Special Domains

We maintain two lists of use for you when looking up domains. Ignore lists and BuiltWith Suffix lists.

Ignore List
This is our own internal list of domains we do not index. They are either blocked, contains too many misleading technologies or too many subdomains with user generated content.

BuiltWith Suffix List
This is based on the Public Suffix List but includes many additional entries for companies with subdomains that should be considered top level domains. This list provides us with better visibility for internal websites for example it brings northernbeaches.nsw.gov.au to the top level over nsw.gov.au.

Ignore Domains (XML, JSON or TXT)
https://api.builtwith.com/ignoresv1/api.json
Suffix Domains (XML, JSON or TXT)
https://api.builtwith.com/suffixv1/api.json
Error Codes

Note error messages in this format cannot be guaranteed, your implementation should also consider non-200 response codes as errors. The Lookup property will be null (json) or not provided (xml) if the error is server related. View all potential well-formed error codes.

Terms of Use

Our standard terms cover the use all of our APIs.

In general, you can use the API to enhance your product in many ways. The only limitation is you cannot resell the data as-is or provide duplicate functionality to builtwith.com and its associated services.