Supadata JS SDK

The official TypeScript/JavaScript SDK for Supadata.
Get your free API key at supadata.ai and start scraping data in minutes.
Installation
npm install @supadata/js
Usage
Initialization
import {
Crawl,
CrawlJob,
JobResult,
Map,
Scrape,
Supadata,
Transcript,
TranscriptOrJobId,
YoutubeChannel,
YoutubePlaylist,
YoutubeVideo,
} from '@supadata/js';
const supadata = new Supadata({
apiKey: 'YOUR_API_KEY',
});
Transcripts
const transcriptResult = await supadata.transcript({
url: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',
lang: 'en',
text: true,
mode: 'auto',
});
if ('jobId' in transcriptResult) {
console.log(`Started transcript job: ${transcriptResult.jobId}`);
const jobResult = await supadata.transcript.getJobStatus(
transcriptResult.jobId
);
if (jobResult.status === 'completed') {
console.log('Transcript:', jobResult.result);
} else if (jobResult.status === 'failed') {
console.error('Transcript failed:', jobResult.error);
} else {
console.log('Job status:', jobResult.status);
}
} else {
console.log('Transcript:', transcriptResult);
}
YouTube
const transcript: Transcript = await supadata.youtube.transcript({
url: 'https://youtu.be/dQw4w9WgXcQ',
});
const translated: Transcript = await supadata.youtube.translate({
videoId: 'dQw4w9WgXcQ',
lang: 'es',
});
const video: YoutubeVideo = await supadata.youtube.video({
id: 'dQw4w9WgXcQ',
});
const channel: YoutubeChannel = await supadata.youtube.channel({
id: 'https://youtube.com/@RickAstleyVEVO',
});
const channelVideos: VideoIds = await supadata.youtube.channel.videos({
id: 'https://youtube.com/@RickAstleyVEVO',
type: 'all',
limit: 10,
});
const playlist: YoutubePlaylist = await supadata.youtube.playlist({
id: 'PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI',
});
const playlistVideos: VideoIds = await supadata.youtube.playlist.videos({
id: 'https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc',
limit: 10,
});
const transcriptBatch = await supadata.youtube.transcript.batch({
videoIds: ['dQw4w9WgXcQ', 'xvFZjo5PgG0'],
lang: 'en',
});
console.log(`Started transcript batch job: ${transcriptBatch.jobId}`);
const videoBatch = await supadata.youtube.video.batch({
videoIds: ['dQw4w9WgXcQ', 'xvFZjo5PgG0', 'L_jWHffIx5E'],
});
console.log(`Started video batch job: ${videoBatch.jobId}`);
const batchResults = await supadata.youtube.batch.getBatchResults(
transcriptBatch.jobId
);
if (batchResults.status === 'completed') {
console.log('Batch job completed:', batchResults.results);
console.log('Stats:', batchResults.stats);
} else {
console.log('Batch job status:', batchResults.status);
}
Web
const webContent: Scrape = await supadata.web.scrape('https://supadata.ai');
const siteMap: Map = await supadata.web.map('https://supadata.ai');
const crawl: JobId = await supadata.web.crawl({
url: 'https://supadata.ai',
limit: 10,
});
const crawlResults: CrawlJob = await supadata.web.getCrawlResults(crawl.jobId);
Error Handling
The SDK throws SupadataError
for API-related errors. You can catch and handle these errors as follows:
import { SupadataError } from '@supadata/js';
try {
const transcript = await supadata.youtube.transcript({
videoId: 'INVALID_ID',
});
} catch (e) {
if (e instanceof SupadataError) {
console.error(e.error);
console.error(e.message);
console.error(e.details);
console.error(e.documentationUrl);
}
}
Example
See the example directory for a simple example of how to use the SDK.
API Reference
See the Documentation for more details on all possible parameters and options.
License
MIT