API Examples
Practical examples for integrating ThumbGrab into your workflow.
Node.js: Extract and Save
const fs = require('fs');
const fetch = require('node-fetch');
async function extractAndSave(videoUrl) {
// Extract thumbnail info
const response = await fetch('https://thumbgrab.cc/api/v1/extract', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({ url: videoUrl }),
});
const data = await response.json();
// Download the best thumbnail
const best = data.thumbnails.find(t => t.available);
if (best) {
const imgResponse = await fetch(best.url);
const buffer = await imgResponse.buffer();
fs.writeFileSync(`${data.videoId}.jpg`, buffer);
console.log(`Saved: ${data.videoId}.jpg`);
}
}
extractAndSave('https://youtube.com/watch?v=dQw4w9WgXcQ');Python: Bulk Download
import requests
import os
API_KEY = 'YOUR_API_KEY'
def bulk_download(urls):
response = requests.post(
'https://thumbgrab.cc/api/v1/extract/bulk',
headers={
'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json',
},
json={'urls': urls}
)
results = response.json()['results']
for result in results:
if result['success'] and result['bestThumbnail']:
img = requests.get(result['bestThumbnail']['url'])
filename = f"{result['videoId']}.jpg"
with open(filename, 'wb') as f:
f.write(img.content)
print(f"Downloaded: {filename}")
urls = [
'https://youtube.com/watch?v=video1',
'https://youtube.com/watch?v=video2',
]
bulk_download(urls)Error Handling
async function safeExtract(url) {
try {
const response = await fetch('https://thumbgrab.cc/api/v1/extract', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({ url }),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.message || 'API request failed');
}
return await response.json();
} catch (error) {
console.error('ThumbGrab API error:', error.message);
return null;
}
}