curl -G "https://api.brightdata.com/unblocker/success_rate/example.com" \
--data-urlencode "from_datetime=2026-10-12" \
--data-urlencode "to_datetime=2026-10-19" \
--data-urlencode "url_pattern=/ip/" \
-H "Authorization: Bearer YOUR_API_KEY"import requests
url = "https://api.brightdata.com/unblocker/success_rate/example.com"
params = {
"from_datetime": "2026-10-12",
"to_datetime": "2026-10-19",
"url_pattern": "/ip/",
}
headers = {"Authorization": "Bearer YOUR_API_KEY"}
response = requests.get(url, params=params, headers=headers, timeout=120)
print(response.json())const params = new URLSearchParams({
from_datetime: "2026-10-12",
to_datetime: "2026-10-19",
url_pattern: "/ip/",
});
const response = await fetch(`https://api.brightdata.com/unblocker/success_rate/example.com?${params}`, {
headers: { "Authorization": "Bearer YOUR_API_KEY" },
});
const data = await response.json();
console.log(data);<?php
$params = http_build_query([
"from_datetime" => "2026-10-12",
"to_datetime" => "2026-10-19",
"url_pattern" => "/ip/",
]);
$ch = curl_init("https://api.brightdata.com/unblocker/success_rate/example.com?" . $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer YOUR_API_KEY",
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;package main
import (
"fmt"
"io"
"net/http"
"net/url"
"time"
)
func main() {
params := url.Values{}
params.Set("from_datetime", "2026-10-12")
params.Set("to_datetime", "2026-10-19")
params.Set("url_pattern", "/ip/")
req, _ := http.NewRequest("GET", "https://api.brightdata.com/unblocker/success_rate/example.com?"+params.Encode(), nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
client := &http.Client{Timeout: 120 * time.Second}
res, err := client.Do(req)
if err != nil { panic(err) }
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
public class UnlockerSuccessRate {
public static void main(String[] args) throws Exception {
String query = "from_datetime=2026-10-12&to_datetime=2026-10-19&url_pattern=%2Fip%2F";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.brightdata.com/unblocker/success_rate/example.com?" + query))
.header("Authorization", "Bearer YOUR_API_KEY")
.timeout(Duration.ofSeconds(120))
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'uri'
uri = URI.parse("https://api.brightdata.com/unblocker/success_rate/example.com")
uri.query = URI.encode_www_form(
from_datetime: "2026-10-12",
to_datetime: "2026-10-19",
url_pattern: "/ip/"
)
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer YOUR_API_KEY"
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true, read_timeout: 120) { |http| http.request(request) }
puts response.body{
"example.com": 0.9638127990275274,
"time_p90": 19197,
"example.org": 0.9381671439729237,
"example.net": 1,
"example.pl": 0.9859154929577465,
"example.de": 0.9714285714285714
}{
"error": "User authentication is required"
}Web Unlocker API success rate
Use the Bright Data Web Unlocker API success rate endpoint. GET /unblocker/success_rate/ returns success rate and p90 response time per domain.
curl -G "https://api.brightdata.com/unblocker/success_rate/example.com" \
--data-urlencode "from_datetime=2026-10-12" \
--data-urlencode "to_datetime=2026-10-19" \
--data-urlencode "url_pattern=/ip/" \
-H "Authorization: Bearer YOUR_API_KEY"import requests
url = "https://api.brightdata.com/unblocker/success_rate/example.com"
params = {
"from_datetime": "2026-10-12",
"to_datetime": "2026-10-19",
"url_pattern": "/ip/",
}
headers = {"Authorization": "Bearer YOUR_API_KEY"}
response = requests.get(url, params=params, headers=headers, timeout=120)
print(response.json())const params = new URLSearchParams({
from_datetime: "2026-10-12",
to_datetime: "2026-10-19",
url_pattern: "/ip/",
});
const response = await fetch(`https://api.brightdata.com/unblocker/success_rate/example.com?${params}`, {
headers: { "Authorization": "Bearer YOUR_API_KEY" },
});
const data = await response.json();
console.log(data);<?php
$params = http_build_query([
"from_datetime" => "2026-10-12",
"to_datetime" => "2026-10-19",
"url_pattern" => "/ip/",
]);
$ch = curl_init("https://api.brightdata.com/unblocker/success_rate/example.com?" . $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer YOUR_API_KEY",
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;package main
import (
"fmt"
"io"
"net/http"
"net/url"
"time"
)
func main() {
params := url.Values{}
params.Set("from_datetime", "2026-10-12")
params.Set("to_datetime", "2026-10-19")
params.Set("url_pattern", "/ip/")
req, _ := http.NewRequest("GET", "https://api.brightdata.com/unblocker/success_rate/example.com?"+params.Encode(), nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
client := &http.Client{Timeout: 120 * time.Second}
res, err := client.Do(req)
if err != nil { panic(err) }
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
public class UnlockerSuccessRate {
public static void main(String[] args) throws Exception {
String query = "from_datetime=2026-10-12&to_datetime=2026-10-19&url_pattern=%2Fip%2F";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.brightdata.com/unblocker/success_rate/example.com?" + query))
.header("Authorization", "Bearer YOUR_API_KEY")
.timeout(Duration.ofSeconds(120))
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'uri'
uri = URI.parse("https://api.brightdata.com/unblocker/success_rate/example.com")
uri.query = URI.encode_www_form(
from_datetime: "2026-10-12",
to_datetime: "2026-10-19",
url_pattern: "/ip/"
)
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer YOUR_API_KEY"
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true, read_timeout: 120) { |http| http.request(request) }
puts response.body{
"example.com": 0.9638127990275274,
"time_p90": 19197,
"example.org": 0.9381671439729237,
"example.net": 1,
"example.pl": 0.9859154929577465,
"example.de": 0.9714285714285714
}{
"error": "User authentication is required"
}time_p90, the 90th percentile response time in milliseconds. By default the reporting window is the past 7 days.
Which domains can I query?
Pass one domain or a wildcard in the{domain} path segment:
example.comreturns one figure for that domain.example.*returns one figure for every monitored domain that starts withexample., such asexample.organdexample.de.*.example.comreturns one figure for every monitored subdomain ofexample.com, such asapi.example.com.
How do I filter success rates by date range or URL?
Add the optionalfrom_datetime, to_datetime and url_pattern query parameters. Each one works on its own or combined with the others:
from_datetimeandto_datetimeset the reporting window. Both accept an ISO 8601 UTC date such as2026-10-12or a date-time such as2026-10-12T00:00:00Z. A date on its own means midnight UTC at the start of that day, soto_datetime=2026-10-19covers requests up to the end of October 18.url_patternkeeps only requests whose URL contains the string. The match is case-insensitive and works with wildcard domains.
example.com requests whose URL contains /ip/, between October 12 and October 19, 2026:
curl -G "https://api.brightdata.com/unblocker/success_rate/example.com" \
--data-urlencode "from_datetime=2026-10-12" \
--data-urlencode "to_datetime=2026-10-19" \
--data-urlencode "url_pattern=/ip/" \
-H "Authorization: Bearer YOUR_API_KEY"
time_p90 key:
{"example.com":0.9639765510503175,"time_p90":3347.98323864866}
What does the response contain?
The response is a JSON object with two kinds of keys:- One key per domain. The value is the success rate over the reporting window, from 0 (no request succeeded) to 1 (every request succeeded).
0.9639means 96.39 percent of requests succeeded. time_p90. The 90th percentile (p90) response time in milliseconds for the requests in the window. The response has onetime_p90value, not one per domain, including for wildcard queries.
What is p90 response time?
The p90 response time is the time within which 90 percent of requests finished. Atime_p90 of 3347.98 means 90 percent of requests completed in 3,348 milliseconds (about 3.3 seconds) or less, and the slowest 10 percent took longer.
The p90 is more useful than an average for planning timeouts, because a few very slow requests can pull an average up or down. Set your client timeout above the time_p90 value so that at least 90 percent of requests can finish.
What happens when no data matches?
The endpoint returns HTTP 200 with an empty object{} when no requests match the query. This happens when the domain has no monitored traffic, when url_pattern matches no request URL, or when from_datetime is the same as or later than to_datetime.
Authorizations
Use your Bright Data API Key as a Bearer token in the Authorization header.
How to authenticate:
- Obtain your API Key from the Bright Data account settings at https://brightdata.com/cp/setting/users
- Include the API Key in the Authorization header of your requests
- Format:
Authorization: Bearer YOUR_API_KEY
Example:
Authorization: Bearer b5648e1096c6442f60a6c4bbbe73f8d2234d3d8324554bd6a7ec8f3f251f07df
Learn how to get your Bright Data API key: https://docs.brightdata.com/api-reference/authentication
Path Parameters
Domain to report on. Use a single domain such as example.com, a wildcard such as example.* to return every monitored domain that starts with example., or *.example.com to return every monitored subdomain of example.com.
"example.com"
Query Parameters
Start of the reporting window, in ISO 8601 UTC format. Accepts a date such as 2026-10-12 or a date-time such as 2026-10-12T00:00:00Z. A date on its own means midnight UTC at the start of that day. You can pass from_datetime on its own or together with to_datetime. When from_datetime is the same as or later than to_datetime, the response is an empty object {}.
"2026-10-12"
End of the reporting window, in ISO 8601 UTC format. Accepts a date such as 2026-10-19 or a date-time such as 2026-10-19T00:00:00Z. A date on its own means midnight UTC at the start of that day, so 2026-10-19 covers requests up to the end of October 18. You can pass to_datetime on its own or together with from_datetime.
"2026-10-19"
Return statistics only for requests whose URL contains this string. The match is case-insensitive, so /ip/ matches any request URL containing /ip/ or /IP/. Works with wildcard domains such as example.*. When no request URL matches, the response is an empty object {}.
"/ip/"
Response
Success rate per domain plus one time_p90 value. An empty object {} means no requests matched the query.
JSON object with one key per domain and one time_p90 key. Each domain key holds the success rate over the reporting window, as a number between 0 and 1. time_p90 is the 90th percentile response time in milliseconds: 90 percent of requests in the window finished within this time. The response has one time_p90 value, not one per domain, including for wildcard queries.
90th percentile (p90) response time in milliseconds for the requests in the reporting window. 90 percent of requests finished within this time and the slowest 10 percent took longer.
3347.98323864866
Success rate for this domain over the reporting window, as a number between 0 and 1.
Was this page helpful?