Start scraping documents with the Skop API in minutes
/scrape/
const response = await fetch('https://api.skop.dev/scrape/', { method: 'POST', headers: { 'Authorization': 'Bearer sk-your-api-key-here', 'Content-Type': 'application/json' }, body: JSON.stringify({ website: 'https://example.com', prompt: 'Find meeting minutes from 2025', parameters: { single_page: false, confidence_threshold: 0.7, file_type: 'document' } }) }) const job = await response.json() console.log('Job created:', job.job_id)
{ "job_id": "job_4fc79a89797e", "status": "pending", "message": "Job created successfully and queued for processing", "estimated_completion": "2025-07-24T21:00:00Z", "created_at": "2025-07-24T20:50:00Z" }
const checkStatus = async (jobId) => { const response = await fetch(`https://api.skop.dev/scrape/status/${jobId}`, { headers: { 'Authorization': 'Bearer sk-your-api-key-here' } }) const status = await response.json() console.log('Status:', status.status) if (status.status === 'completed') { // Job is done, get results return getResults(jobId) } else if (status.is_active) { // Still running, check again in 5 seconds setTimeout(() => checkStatus(jobId), 5000) } }
const getResults = async (jobId) => { const response = await fetch(`https://api.skop.dev/scrape/results/${jobId}`, { headers: { 'Authorization': 'Bearer sk-your-api-key-here' } }) const results = await response.json() console.log(`Found ${results.documents.length} documents`) return results }
const scrapeDocuments = async (website, prompt) => { const apiKey = 'sk-your-api-key-here' const baseURL = 'https://api.skop.dev' try { // 1. Create job const jobResponse = await fetch(`${baseURL}/scrape/`, { method: 'POST', headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ website, prompt, parameters: { confidence_threshold: 0.7, file_type: 'document' } }) }) const job = await jobResponse.json() console.log('Job created:', job.job_id) // 2. Poll for completion const pollStatus = async () => { const statusResponse = await fetch(`${baseURL}/scrape/status/${job.job_id}`, { headers: { 'Authorization': `Bearer ${apiKey}` } }) const status = await statusResponse.json() console.log(`Status: ${status.status} (${status.total_documents_found} docs found)`) if (status.is_active) { setTimeout(pollStatus, 5000) } else { // Get results const resultsResponse = await fetch(`${baseURL}/scrape/results/${job.job_id}`, { headers: { 'Authorization': `Bearer ${apiKey}` } }) const results = await resultsResponse.json() console.log('Results:', results) return results } } return pollStatus() } catch (error) { console.error('Error:', error) } } // Usage scrapeDocuments('https://example.com', 'find annual reports from 2024') .then(results => { console.log(`Successfully extracted ${results.documents.length} documents`) })