Cross-Engine Coverage
Pull organic results from Google, Bing, Yahoo, and DuckDuckGo in one request, backed by a rotating proxy network.
Extract search results data from major search engines, including Google. Get title, link, and meta description at scale without getting blocked.
{
"organic_results": [
{
"title": "Scrapingdog: Scalable Web Scraping API for Data Extraction",
"displayed_link": "https://www.scrapingdog.com",
"snippet": "Scrapingdog is your all-in-one Web Scraping API, effortlessly managing proxies and headless browsers so you can extract the data you need with ease.",
"date": "",
"missing": [],
"link": "https://www.scrapingdog.com/",
"extended_sitelinks": [
{
"title": "Web Scraping API",
"link": "https://www.scrapingdog.com/web-scraping-api/"
},
{
"title": "Documentation",
"link": "https://docs.scrapingdog.com/"
}
],
"rank": 1
},
{
"title": "Web Scraping API - Scrapingdog",
"displayed_link": "https://www.scrapingdog.com/web-scraping-api",
"snippet": "Use a single API to scrape any website with built-in proxy rotation, CAPTCHA handling, and JavaScript rendering.",
"date": "",
"missing": [],
"link": "https://www.scrapingdog.com/web-scraping-api/",
"extended_sitelinks": [],
"rank": 2
}
]
}import requests
api_key = "5eaa61a6e562fc52fe763tr516e4653"
url = "https://api.scrapingdog.com/search/"
params = {
"api_key": api_key,
"query": "football",
"country": "us",
"language": "en"
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
print(data)
else:
print(f"Request failed with status code: {response.status_code}")import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
// Set the API key and request parameters
String apiKey = "5eaa61a6e562fc52fe763tr516e4653";
String query = "football";
String country = "us";
String language = "en";
// Construct the API endpoint URL
String apiUrl = "https://api.scrapingdog.com/search/?api_key=" + apiKey
+ "&query=" + query
+ "&country=" + country
+ "&language=" + language;
URL url = new URL(apiUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
int responseCode = connection.getResponseCode();
if (responseCode == 200) {
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = reader.readLine()) != null) {
response.append(inputLine);
}
reader.close();
System.out.println(response.toString());
} else {
System.out.println("HTTP request failed with response code: " + responseCode);
}
connection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}<?php
// Set the API key and request parameters
$api_key = '5eaa61a6e562fc52fe763tr516e4653';
$query = 'football';
$country = 'us';
$language = 'en';
// Set the API endpoint
$url = 'https://api.scrapingdog.com/search/?api_key=' . $api_key . '&query=' . $query . '&country=' . $country . '&language=' . $language;
// Initialize cURL session
$ch = curl_init($url);
// Set cURL options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Execute the cURL request
$response = curl_exec($ch);
// Check if the request was successful
if ($response === false) {
echo 'cURL error: ' . curl_error($ch);
} else {
echo $response;
}
// Close the cURL session
curl_close($ch);require 'net/http'
require 'uri'
# Set the API key and request parameters
api_key = '5eaa61a6e562fc52fe763tr516e4653'
query = 'football'
country = 'us'
language = 'en'
# Construct the API endpoint URL
url = URI.parse("https://api.scrapingdog.com/search/?api_key=#{api_key}&query=#{query}&country=#{country}&language=#{language}")
# Create an HTTP GET request
request = Net::HTTP::Get.new(url)
# Create an HTTP client
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true # Enable SSL (https)
# Send the request and get the response
response = http.request(request)
# Check if the request was successful
if response.is_a?(Net::HTTPSuccess)
puts response.body
else
puts "HTTP request failed with code: #{response.code}, message: #{response.message}"
endconst axios = require('axios');
const api_key = '5eaa61a6e562fc52fe763tr516e4653';
const url = 'https://api.scrapingdog.com/search/';
const params = {
api_key: api_key,
query: 'football',
country: 'us',
language: 'en',
};
axios
.get(url, { params: params })
.then(function (response) {
if (response.status === 200) {
const data = response.data;
console.log(data);
} else {
console.log('Request failed with status code: ' + response.status);
}
})
.catch(function (error) {
console.error('Error making the request: ' + error.message);
});organic_resultstitlelinksnippetrankdisplayed_linkdatemissingextended_sitelinkstitlelinkQuerying every engine by hand means a separate scraper, proxy pool, and parser for each, then reconciling four conflicting result formats.
Google, Bing, Yahoo, and DuckDuckGo each have their own layout and anti-bot defenses, so you babysit four separate pipelines.
Every engine structures its fields differently, forcing fragile mapping code just to line up titles, links, and snippets.
The same URL surfaces on multiple engines with different titles, so you must build fuzzy-matching logic to merge duplicates.
Scraping one engine skews coverage toward its ranking model, leaving research and SEO audits with hidden blind spots.
One request fans out across every major engine, then returns a single de-duplicated, standardised organic_results list.
Run a single query and instantly fetch results from Google, Bing, Yahoo, and DuckDuckGo. No need to juggle multiple APIs or requests.
Duplicate entries are automatically removed. If two engines return the same result, you'll only get one, giving you a concise, unique dataset.
Wider coverage plus de-duplicated data gives you diverse, bias-free information for training LLMs, analysis, or research tools.
Every engine returns the same organic_results shape, so a single request replaces multiple calls and parsers.
Pull organic results from Google, Bing, Yahoo, and DuckDuckGo in one request, backed by a rotating proxy network.
Overlapping results from more than one engine are merged into a single entry, so your organic_results list stays unique.
Every result comes back with the same title, link, snippet, rank, and extended_sitelinks structure, with no per-engine parsing.
CAPTCHAs and anti-bot challenges across all four engines are solved automatically, so your queries do not stall on blocks.
Localise every query with the country and language parameters to capture how results differ by region.
A single request replaces four separate engine calls, returning merged results and lowering both latency and spend.
Compare how websites rank across Google, Bing, Yahoo, and DuckDuckGo to get a complete SEO visibility picture.
Build diverse, unbiased training data for large language models using de-duplicated results from all engines.
See how competitors appear differently across every major engine at once and discover hidden opportunities.
Spot rising trends earlier by analyzing queries and results across multiple search platforms.
Reduce reliance on a single engine and collect balanced information from multiple sources.
Power literature reviews and large-scale studies with merged, de-duplicated results spanning every major engine.
Sign up and get free credits to start testing the Universal Search API.
Grab your API key from the dashboard to authenticate every search request.
Call /search with a query plus optional country and language to fan out across every engine.
Get a clean, de-duplicated organic_results array with titles, links, snippets, ranks, and sitelinks.
Start your web scraping journey with 200 free credits. Test our service and upgrade to one of the plans below. Cancel anytime.

I got the free trial and in less than a minute I already integrated with their API to scrape Google, matter of fact they had all the plug-and-play codes ready for me. It was seamless. I am about to upgrade as I have used up my trial credits.
United States
I love how you can use it to scrape data from Google.
Norway
Scrapingdog is an awesome service. I use it with my Local Leads Sniper system and thanks to it I have been able to land a few clients since it gave me all the info that my client's Google Business Profile was missing. Great service!
Mexico
Reliable, and simple to use! Itβs also inexpensive and has packaged solutions for every need (Google, LinkedIn). Highly recommend.
France
Yes, the API has a rate limit depending on your chosen subscription plan. For detailed information on request limits and how to manage them efficiently, please refer to the documentation or message us on live chat.
The API extracts data from all major search engines, including Google Search, Bing Search, Yahoo & DuckDuckGo. If you need data from all these engines, use this API. The data you get is filtered, and instead of calling each API individually, this will save your time and is economical.
Yes, we have a dedicated API for Google Search and an API for Bing Search that you can use to scrape individual search engine results.
Each API request consumes a certain number of credits based on the dedicated API you're using. For example, the Google Search API costs 5 credits per request. So, if you make one request to the Google Search API, it will deduct 5 credits from the available credits in your account.
Get 200 free credits to spin the API. No credit card required!