Fresh Every Time
The API fetches live Shorts on each request, so you always get the most current list and never worry about stale data.
Extract the Google Short videos' title, source, thumbnail URL, and date of publication using our API.
{
"short_videos_results": [
{
"title": "Elon Musk on the future of AI and robots",
"source": "CNBC Television",
"source_logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...",
"thumbnail": "https://i.ytimg.com/vi/3KtWfp0UopM/hq720.jpg",
"gif_url": "https://i.ytimg.com/an_webp/3KtWfp0UopM/mqdefault_6s.webp",
"account_name": "CNBC Television",
"date": "May 21, 2025",
"link": "https://www.youtube.com/shorts/3KtWfp0UopM"
},
{
"title": "SpaceX Starship test highlights",
"source": "Sky News",
"source_logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...",
"thumbnail": "https://i.ytimg.com/vi/Hk9aMq0dQ0o/hq720.jpg",
"gif_url": "https://i.ytimg.com/an_webp/Hk9aMq0dQ0o/mqdefault_6s.webp",
"account_name": "Sky News",
"date": "Apr 9, 2025",
"link": "https://www.youtube.com/shorts/Hk9aMq0dQ0o"
}
]
}import requests
api_key = "5eaa61a6e562fc52fe763tr516e4653"
url = "https://api.scrapingdog.com/google_shorts"
params = {
"api_key": api_key,
"query": "elon musk"
}
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 {
String apiKey = "5eaa61a6e562fc52fe763tr516e4653";
String apiUrl = "https://api.scrapingdog.com/google_shorts?api_key=" + apiKey
+ "&query=elon+musk";
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
$api_key = '5eaa61a6e562fc52fe763tr516e4653';
$url = 'https://api.scrapingdog.com/google_shorts?api_key=' . $api_key . '&query=elon+musk';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if ($response === false) {
echo 'cURL error: ' . curl_error($ch);
} else {
echo $response;
}
curl_close($ch);require 'net/http'
require 'uri'
api_key = '5eaa61a6e562fc52fe763tr516e4653'
url = URI.parse("https://api.scrapingdog.com/google_shorts?api_key=#{api_key}&query=elon+musk")
request = Net::HTTP::Get.new(url)
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
response = http.request(request)
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/google_shorts';
const params = {
api_key: api_key,
query: 'elon musk',
};
axios
.get(url, { params: params })
.then(function (response) {
if (response.status === 200) {
console.log(response.data);
} else {
console.log('Request failed with status code: ' + response.status);
}
})
.catch(function (error) {
console.error('Error making the request: ' + error.message);
});titlelinkdatesourcesource_logoaccount_namethumbnailgif_urlScraping the Shorts shelf out of Google results by hand means fighting JavaScript rendering, rotating layouts, and aggressive bot detection.
The Shorts carousel loads dynamically, so a plain HTML fetch returns nothing — you need a full headless browser per request.
Google flags automated traffic quickly, so you burn time maintaining proxy pools and CAPTCHA solvers.
Titles, sources, thumbnails, and dates move between fragments that Google rotates, breaking brittle scrapers.
Shorts rankings change constantly; building your own refresh jobs to stay current is a maintenance burden.
A single GET request returns clean JSON, while proxies, rendering, and parsing are all handled for you.
The API fetches live Shorts on each request, so you always get the most current list without building refresh jobs.
Call it once for a test or a million times in production — the back-end handles load and rotates proxies for you.
Send a single GET request with your key and a query; the response arrives in tidy JSON ready for any stack.
No headless browsers, no servers, no block-handling — just the structured data you asked for.
The API fetches live Shorts on each request, so you always get the most current list and never worry about stale data.
Call it once for a test or a million times in production. Our back-end handles the load and rotates proxies for you.
Send a single GET request with your key and a query. The response arrives in tidy JSON for Python, Node, or any stack.
A built-in rotating proxy system changes IP addresses automatically so requests never get blocked.
Scrapingdog bypasses CAPTCHA and anti-bot protection on Google automatically.
Receive structured Shorts data in just a few seconds with our high-performance infrastructure.
Monitor which Shorts surface for a keyword over time to spot trending topics and formats early.
See which short videos competitors and brands rank for and how their content performs.
Discover the angles, hooks, and creators dominating Shorts for any niche to inform your own content.
Find the channels and platforms (YouTube, TikTok, Instagram) behind the top Shorts for a query.
Track where specific Shorts appear for target keywords and how their position shifts.
Feed structured Shorts metadata into dashboards for media monitoring and social listening.
Sign up and get 200 free credits to start testing the Google Shorts API.
Copy your API key from the dashboard to authenticate every request.
Call /google_shorts with a query to pull the live Shorts results.
Get a JSON short_videos_results array with title, source, thumbnail, and date.
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. They had all the plug-and-play codes ready for me. It was seamless.
United States
I love how you can use it to scrape data from Google.
Norway
Reliable, and simple to use! It’s also inexpensive and has packaged solutions for every need (Google, LinkedIn). Highly recommend.
France
The API is easy to use and the response is fast and clean. Exactly what we needed for our content research.
Italy
The Google Shorts API lets you extract the short videos shown in Google search results — including their title, source, thumbnail, GIF preview, account name, and publication date — as structured JSON.
For each short video you get the title, source platform, source logo, thumbnail URL, GIF preview URL, account name, publication date, and a direct link to the video.
Yes, you get 200 free credits on signup with no credit card required, so you can test the Google Shorts API before upgrading.
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. The number of credits required per request can vary depending on the specific API you're using.
Get 200 free credits to spin the API. No credit card required!