Complete API Reference
All 60 endpoints across 15 sections
Table of Contents
Authentication
User authentication and session management
1 endpoint/api/auth/signupSign Up
Register a new user account
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| string | Required | User email address | |
| password | string | Required | Password (minimum 8 characters) |
| name | string | Optional | User display name |
| termsAccepted | boolean | Required | Must be true to accept terms |
| privacyAccepted | boolean | Required | Must be true to accept privacy policy |
| marketingConsent | boolean | Optional | Opt-in to marketing emails |
Example Request
curl -X POST "https://api.scrappy.gg/api/auth/signup" \-H "Content-Type: application/json" \-d '{"email": "user@example.com","password": "your-password","termsAccepted": true,"privacyAccepted": true}'
Responses
{"success": true,"data": {"user": {"id": "abc123","email": "user@example.com"}}}
{"success": false,"error": {"code": "VALIDATION_ERROR","message": "Invalid email format"}}
{"success": false,"error": {"code": "RATE_LIMIT_EXCEEDED","message": "Too many attempts"}}
Users
User profile and account management
2 endpoints/api/usersGet Current User
Get the authenticated user's profile and statistics
Example Request
curl -X GET "https://api.scrappy.gg/api/users" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"user": {"id": "abc123","email": "user@example.com","name": "John Doe","createdAt": "2024-01-01T00:00:00Z"},"stats": {"sources": 10,"jobs": 25,"leads": 500}}}
{"success": false,"error": {"code": "UNAUTHORIZED","message": "Authentication required"}}
/api/users/passwordChange Password
Update the authenticated user's password
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| currentPassword | string | Required | Current password for verification |
| newPassword | string | Required | New password (minimum 8 characters) |
Example Request
curl -X PATCH "https://api.scrappy.gg/api/users/password" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"currentPassword": "your-password","newPassword": "your-password"}'
Responses
{"success": true}
{"success": false,"error": {"code": "INVALID_PASSWORD","message": "Current password is incorrect"}}
Consent Management
GDPR consent preferences and history
3 endpoints/api/users/consentGet Consent Status
Get current consent preferences for the authenticated user
Example Request
curl -X GET "https://api.scrappy.gg/api/users/consent" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"termsAccepted": true,"termsAcceptedAt": "2024-01-01T00:00:00Z","privacyAccepted": true,"privacyAcceptedAt": "2024-01-01T00:00:00Z","marketingConsent": false}}
/api/users/consentUpdate Consent
Update consent preferences (currently supports marketing consent)
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| marketingConsent | boolean | Required | Whether to receive marketing emails |
Example Request
curl -X PATCH "https://api.scrappy.gg/api/users/consent" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"marketingConsent": true}'
Responses
{"success": true,"data": {"marketingConsent": true,"updatedAt": "2024-01-01T00:00:00Z"}}
/api/users/consent/historyGet Consent History
Get audit trail of consent changes
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| limit | number | Optional | Number of records to returnDefault: 50 |
| offset | number | Optional | Number of records to skipDefault: 0 |
Example Request
curl -X GET "https://api.scrappy.gg/api/users/consent/history" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"history": [{"id": "abc123","action": "CONSENT_UPDATED","details": {"marketingConsent": true},"createdAt": "2024-01-01T00:00:00Z"}],"pagination": {"total": 1,"limit": 50,"offset": 0}}}
Data Export
GDPR subject access requests - export your data
3 endpoints/api/users/exportRequest Data Export
Request an export of all your data (JSON or CSV format)
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| format | string | Optional | Export formatOptions: JSON, CSVDefault: JSON |
Example Request
curl -X POST "https://api.scrappy.gg/api/users/export" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json"
Responses
{"success": true,"data": {"requestId": "abc123","status": "PENDING","downloadExpiry": "2024-01-08T00:00:00Z"}}
{"success": false,"error": {"code": "RATE_LIMIT_EXCEEDED","message": "Maximum 3 exports per week"}}
/api/users/export/statusGet Export Status
Check the status of all export requests
Example Request
curl -X GET "https://api.scrappy.gg/api/users/export/status" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"exports": [{"requestId": "abc123","status": "COMPLETED","format": "JSON","createdAt": "2024-01-01T00:00:00Z","downloadExpiry": "2024-01-08T00:00:00Z"}]}}
/api/users/export/downloadDownload Export
Download a completed data export (7-day download window)
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| requestId | string | Required | The export request ID |
Example Request
curl -X GET ?requestId=abc123"https://api.scrappy.gg/api/users/export/download" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"note": "Returns file attachment"}
{"success": false,"error": {"code": "NOT_FOUND","message": "Export not found or expired"}}
Account Deletion
GDPR right to erasure - delete your account
4 endpoints/api/users/deletionRequest Account Deletion
Request deletion of your account. A confirmation email will be sent.
Example Request
curl -X POST "https://api.scrappy.gg/api/users/deletion" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"expiresAt": "2024-01-02T00:00:00Z"}}
{"success": false,"error": {"code": "RATE_LIMIT_EXCEEDED","message": "One deletion request per day"}}
/api/users/deletion/confirmConfirm Account Deletion
Confirm account deletion using the token from email. Starts 30-day grace period.
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| token | string | Required | Confirmation token from email (24-hour expiry) |
Example Request
curl -X POST "https://api.scrappy.gg/api/users/deletion/confirm" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"token": "string"}'
Responses
{"success": true,"data": {"scheduledAt": "2024-01-31T00:00:00Z","gracePeriodDays": 30}}
{"success": false,"error": {"code": "INVALID_TOKEN","message": "Token is invalid or expired"}}
/api/users/deletion/cancelCancel Account Deletion
Cancel a pending account deletion during the grace period
Example Request
curl -X POST "https://api.scrappy.gg/api/users/deletion/cancel" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"message": "Account deletion cancelled"}
{"success": false,"error": {"code": "NO_PENDING_DELETION","message": "No deletion request to cancel"}}
/api/users/deletion/statusGet Deletion Status
Check the status of any pending account deletion
Example Request
curl -X GET "https://api.scrappy.gg/api/users/deletion/status" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"status": "scheduled","scheduledAt": "2024-01-31T00:00:00Z","gracePeriodDays": 30}}
Projects
Organize sources and leads into projects
5 endpoints/api/projectsList Projects
Get all projects for the authenticated user
Example Request
curl -X GET "https://api.scrappy.gg/api/projects" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"projects": [{"id": "abc123","name": "My Project","description": "Project description","color": "#3b82f6","createdAt": "2024-01-01T00:00:00Z"}]}}
/api/projectsCreate Project
Create a new project
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | Required | Project name |
| description | string | Optional | Project description |
| color | string | Optional | Hex color code (e.g., #3b82f6) |
Example Request
curl -X POST "https://api.scrappy.gg/api/projects" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"name": "Example Name"}'
Responses
{"success": true,"data": {"project": {"id": "abc123","name": "My Project"}}}
/api/projects/[id]Get Project
Get a specific project by ID
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Project ID |
Example Request
curl -X GET "https://api.scrappy.gg/api/projects/abc123" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"project": {"id": "abc123","name": "My Project"}}}
{"success": false,"error": {"code": "NOT_FOUND","message": "Project not found"}}
/api/projects/[id]Update Project
Update a project's details
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Project ID |
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | Optional | Project name |
| description | string | Optional | Project description |
| color | string | Optional | Hex color code |
Example Request
curl -X PATCH "https://api.scrappy.gg/api/projects/abc123" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json"
Responses
{"success": true,"data": {"project": {"id": "abc123","name": "Updated Project"}}}
{"success": false,"error": {"code": "FORBIDDEN","message": "Not authorized to update this project"}}
/api/projects/[id]Delete Project
Delete a project and all associated data
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Project ID |
Example Request
curl -X DELETE "https://api.scrappy.gg/api/projects/abc123" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true}
{"success": false,"error": {"code": "FORBIDDEN","message": "Not authorized to delete this project"}}
Sources
Manage data sources for lead scraping
10 endpoints/api/sourcesList Sources
Get all sources with optional filtering
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| status | string | Optional | Filter by statusOptions: DRAFT, ACTIVE, ARCHIVED |
| projectId | string | Optional | Filter by project ID |
Example Request
curl -X GET "https://api.scrappy.gg/api/sources" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"sources": [{"id": "abc123","name": "Example Source","url": "https://example.com","scrapeType": "STATIC","status": "ACTIVE"}]}}
/api/sourcesCreate Source
Create a new source for lead scraping
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | Required | Source name |
| url | string | Required | URL to scrape |
| scrapeType | string | Required | Type of scrapingOptions: STATIC, DYNAMIC, API |
| selectors | object | Required | CSS/XPath selectors for data extraction |
| description | string | Optional | Source description |
| scheduleType | string | Optional | Scraping scheduleOptions: MANUAL, HOURLY, DAILY, WEEKLY |
Example Request
curl -X POST "https://api.scrappy.gg/api/sources" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"name": "Example Name","url": "https://example.com","scrapeType": "string","selectors": {}}'
Responses
{"success": true,"data": {"source": {"id": "abc123","name": "Example Source","status": "DRAFT"}}}
/api/sources/[id]Get Source
Get a specific source by ID
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Source ID |
Example Request
curl -X GET "https://api.scrappy.gg/api/sources/abc123" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"source": {"id": "abc123","name": "Example Source"}}}
/api/sources/[id]Update Source
Update a source's configuration
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Source ID |
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | Optional | Source name |
| url | string | Optional | URL to scrape |
| selectors | object | Optional | CSS/XPath selectors |
Example Request
curl -X PATCH "https://api.scrappy.gg/api/sources/abc123" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json"
Responses
{"success": true,"data": {"source": {"id": "abc123","name": "Updated Source"}}}
/api/sources/[id]Delete Source
Delete a source
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Source ID |
Example Request
curl -X DELETE "https://api.scrappy.gg/api/sources/abc123" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true}
/api/sources/[id]/activateActivate Source
Activate a draft source to enable scraping
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Source ID |
Example Request
curl -X POST "https://api.scrappy.gg/api/sources/abc123/activate" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"source": {"id": "abc123","status": "ACTIVE"}}}
{"success": false,"error": {"code": "ALREADY_ACTIVE","message": "Source is already active"}}
/api/sources/discoverDiscover Sources (AI)
Use AI to discover relevant sources based on a search query
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| query | string | Required | Search query (minimum 3 characters) |
| count | number | Optional | Number of sources to discover (1-10)Default: 5 |
Example Request
curl -X POST "https://api.scrappy.gg/api/sources/discover" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"query": "search term"}'
Responses
{"success": true,"data": {"sources": [{"name": "Example Directory","url": "https://example.com/directory","category": "Business Directory","estimatedLeads": 500,"scrapeType": "STATIC","description": "A directory of local businesses","reasoning": "This directory contains relevant business listings"}]}}
/api/sources/generateGenerate Sources (AI)
Use AI to generate source suggestions based on a project description
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| projectDescription | string | Required | Project description (minimum 10 characters) |
| targetAudience | string | Optional | Target audience for the leads |
| industry | string | Optional | Industry to focus on |
| location | string | Optional | Geographic location |
| count | number | Optional | Number of sources to generate (1-5)Default: 3 |
| autoSave | boolean | Optional | Automatically save generated sources to the projectDefault: false |
Example Request
curl -X POST "https://api.scrappy.gg/api/sources/generate" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"projectDescription": "string"}'
Responses
{"success": true,"data": {"sources": [{"name": "Industry Directory","url": "https://example.com/directory","description": "Relevant directory for target industry","scrapeType": "STATIC","reasoning": "Matches project requirements"}]}}
{"success": false,"error": {"code": "VALIDATION_ERROR","message": "Project description must be at least 10 characters"}}
/api/sources/batchBatch Create Sources
Create multiple sources at once from AI suggestions or manual input
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| sources | array | Required | Array of source objects to create (1 or more) |
| sources[].name | string | Required | Source name |
| sources[].url | string | Required | URL to scrape |
| sources[].description | string | Optional | Source description |
| sources[].scrapeType | string | Optional | Type of scrapingOptions: STATIC, DYNAMIC, APIDefault: DYNAMIC |
| sources[].selectors | object | Optional | CSS/XPath selectors for data extraction |
| sources[].reasoning | string | Optional | AI reasoning for why this source was suggested |
Example Request
curl -X POST "https://api.scrappy.gg/api/sources/batch" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"sources": [],"sources[].name": "Example Name","sources[].url": "https://example.com"}'
Responses
{"success": true,"data": {"sources": [{"id": "abc123","name": "Example Source","status": "DRAFT"}],"count": 1}}
{"success": false,"error": {"code": "VALIDATION_ERROR","message": "At least one source is required"}}
/api/sources/analyzeAnalyze Source
Analyze project requirements from a URL or PDF file
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| file | file | Optional | PDF file to analyze (mutually exclusive with url) |
| url | string | Optional | URL to analyze (mutually exclusive with file) |
Example Request
curl -X POST "https://api.scrappy.gg/api/sources/analyze" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: multipart/form-data"
Responses
{"success": true,"data": {"requirements": {"targetAudience": "Small businesses","industry": "Technology","location": "United States","suggestedSources": []}}}
{"success": false,"error": {"code": "VALIDATION_ERROR","message": "Either file or url is required"}}
Jobs
Scraping job management and monitoring
5 endpoints/api/jobsList Jobs
Get all scraping jobs
Example Request
curl -X GET "https://api.scrappy.gg/api/jobs" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"jobs": [{"id": "abc123","name": "Scrape Job","status": "COMPLETED","progress": 100,"leadsFound": 150,"createdAt": "2024-01-01T00:00:00Z"}]}}
/api/jobsCreate Job
Create and enqueue a new scraping job
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | Required | Job name |
| sourceId | string | Required | Source ID to scrape |
Example Request
curl -X POST "https://api.scrappy.gg/api/jobs" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"name": "Example Name","sourceId": "abc123"}'
Responses
{"success": true,"data": {"job": {"id": "abc123","name": "Scrape Job","status": "PENDING"}}}
/api/jobs/[id]Get Job
Get job details and progress
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Job ID |
Example Request
curl -X GET "https://api.scrappy.gg/api/jobs/abc123" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"job": {"id": "abc123","status": "RUNNING","progress": 45,"leadsFound": 67}}}
/api/jobs/[id]Cancel/Delete Job
Cancel a running job or delete a completed job
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Job ID |
Example Request
curl -X DELETE "https://api.scrappy.gg/api/jobs/abc123" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true}
/api/jobs/[id]/retryRetry Job
Retry a failed job
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Job ID |
Example Request
curl -X POST "https://api.scrappy.gg/api/jobs/abc123/retry" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"message": "Job retry started"}
{"success": false,"error": {"code": "INVALID_STATUS","message": "Only failed jobs can be retried"}}
Leads
Lead management and email validation
9 endpoints/api/leadsList Leads
Get all leads with optional filtering
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| status | string | Optional | Filter by status |
| company | string | Optional | Filter by company name |
| jobId | string | Optional | Filter by job ID |
Example Request
curl -X GET "https://api.scrappy.gg/api/leads" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"leads": [{"id": "abc123","firstName": "John","lastName": "Doe","email": "john@example.com","company": "Example Inc","status": "VALID"}]}}
/api/leadsCreate Lead
Create a lead manually
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| sourceUrl | string | Required | Source URL where lead was found |
| firstName | string | Optional | First name |
| lastName | string | Optional | Last name |
| string | Optional | Email address | |
| phone | string | Optional | Phone number |
| company | string | Optional | Company name |
| jobTitle | string | Optional | Job title |
Example Request
curl -X POST "https://api.scrappy.gg/api/leads" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"sourceUrl": "https://example.com"}'
Responses
{"success": true,"data": {"lead": {"id": "abc123","firstName": "John","lastName": "Doe"}}}
/api/leads/[id]Get Lead
Get lead details with job and source info
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Lead ID |
Example Request
curl -X GET "https://api.scrappy.gg/api/leads/abc123" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"lead": {"id": "abc123","email": "john@example.com"}}}
/api/leads/[id]Update Lead
Update a lead's information
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Lead ID |
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| firstName | string | Optional | First name |
| lastName | string | Optional | Last name |
| string | Optional | Email address | |
| status | string | Optional | Lead status |
| tags | array | Optional | Tags for categorization |
| notes | string | Optional | Notes about the lead |
Example Request
curl -X PATCH "https://api.scrappy.gg/api/leads/abc123" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json"
Responses
{"success": true,"data": {"lead": {"id": "abc123"}}}
/api/leads/[id]Delete Lead
Delete a lead
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Lead ID |
Example Request
curl -X DELETE "https://api.scrappy.gg/api/leads/abc123" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true}
/api/leads/[id]/validate-emailValidate Lead Email
Trigger email validation for a specific lead
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Lead ID |
Example Request
curl -X POST "https://api.scrappy.gg/api/leads/abc123/validate-email" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"status": "VALID","tier": "TIER_1","errors": [],"flags": []}}
{"success": false,"error": {"code": "NO_EMAIL","message": "Lead has no email to validate"}}
/api/leads/bulkBulk Delete Leads
Delete multiple leads at once (max 1000)
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| leadIds | array | Required | Array of lead IDs to delete (1-1000) |
Example Request
curl -X POST "https://api.scrappy.gg/api/leads/bulk" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"leadIds": []}'
Responses
{"success": true,"data": {"deleted": 50,"failed": 0,"errors": []}}
/api/leads/bulkBulk Update Leads
Update multiple leads at once
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| leadIds | array | Required | Array of lead IDs to update |
| updates | object | Required | Updates to apply (status, tags add/remove) |
Example Request
curl -X PATCH "https://api.scrappy.gg/api/leads/bulk" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"leadIds": [],"updates": {}}'
Responses
{"success": true,"data": {"updated": 50,"failed": 0}}
/api/leads/validate-bulkBulk Validate Emails
Queue email validation for multiple leads (max 1000)
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| leadIds | array | Required | Array of lead IDs to validate (1-1000) |
Example Request
curl -X POST "https://api.scrappy.gg/api/leads/validate-bulk" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"leadIds": []}'
Responses
{"success": true,"data": {"totalRequested": 100,"totalQueued": 95,"skipped": [{"id": "abc","reason": "No email"}]}}
Email Verification
Email bounce tracking and spam trap detection
3 endpoints/api/email-verification/bounceRecord Bounce
Record an email bounce event
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| string | Required | Email address that bounced | |
| bounceType | string | Required | Type of bounceOptions: HARD, SOFT, SPAM |
| bounceReason | string | Optional | Detailed bounce reason |
| smtpCode | string | Optional | SMTP error code |
Example Request
curl -X POST "https://api.scrappy.gg/api/email-verification/bounce" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"email": "user@example.com","bounceType": "string"}'
Responses
{"success": true}
/api/email-verification/spam-trapMark as Spam Trap
Mark an email as a known spam trap
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| string | Required | Email address | |
| confidence | number | Optional | Confidence level 0-100Default: 100 |
| trapType | string | Optional | Type of spam trap |
| source | string | Optional | Source of identification |
Example Request
curl -X POST "https://api.scrappy.gg/api/email-verification/spam-trap" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"email": "user@example.com"}'
Responses
{"success": true}
/api/email-verification/statsGet Verification Stats
Get email verification and bounce statistics
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| bounces | boolean | Optional | Include recent bounces |
| bounceLimit | number | Optional | Number of recent bouncesDefault: 100 |
Example Request
curl -X GET "https://api.scrappy.gg/api/email-verification/stats" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"verificationStats": {"total": 1000,"valid": 850,"invalid": 100,"unknown": 50},"bounceStats": {"hard": 50,"soft": 30,"spam": 20},"recentBounces": []}}
Credits
Credit balance and purchasing
3 endpoints/api/credits/balanceGet Credit Balance
Get the current user's credit balance
Example Request
curl -X GET "https://api.scrappy.gg/api/credits/balance" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"balance": 500,"configured": true,"costs": {"scrape": 1,"emailValidation": 0.5,"aiDiscovery": 5}}}
/api/credits/pricingGet Pricing Tiers
Get available credit pricing tiers for purchase
Example Request
curl -X GET "https://api.scrappy.gg/api/credits/pricing" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"tiers": [{"id": "starter","credits": 100,"price": 9.99},{"id": "pro","credits": 500,"price": 39.99}],"configured": true}}
/api/credits/checkoutCreate Checkout Session
Create a checkout session to purchase credits
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| pricingTierId | string | Required | ID of the pricing tier to purchase |
Example Request
curl -X POST "https://api.scrappy.gg/api/credits/checkout" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"pricingTierId": "abc123"}'
Responses
{"success": true,"data": {"url": "https://checkout.stripe.com/..."}}
{"success": false,"error": {"code": "SERVICE_UNAVAILABLE","message": "Credits system not configured"}}
Markdown Exports
Export websites to markdown format
7 endpoints/api/markdown-exportsList Exports
Get all markdown exports
Example Request
curl -X GET "https://api.scrappy.gg/api/markdown-exports" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"exports": [{"id": "abc123","name": "Example Site","url": "https://example.com","status": "COMPLETED","pageCount": 25}]}}
/api/markdown-exportsCreate Export
Create a new markdown export job
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | Required | Export name |
| url | string | Required | URL to export |
| exportType | string | Optional | Export typeOptions: SINGLE_PAGE, FULL_SITEDefault: SINGLE_PAGE |
| maxPages | number | Optional | Maximum pages to export (1-1000)Default: 100 |
| followExternal | boolean | Optional | Follow external links |
| useSitemap | boolean | Optional | Use sitemap.xml for discovery |
Example Request
curl -X POST "https://api.scrappy.gg/api/markdown-exports" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"name": "Example Name","url": "https://example.com"}'
Responses
{"success": true,"data": {"export": {"id": "abc123","status": "PENDING"}}}
/api/markdown-exports/[id]Get Export
Get export details
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Export ID |
Example Request
curl -X GET "https://api.scrappy.gg/api/markdown-exports/abc123" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"export": {"id": "abc123","status": "COMPLETED"}}}
/api/markdown-exports/[id]Delete Export
Delete an export
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Export ID |
Example Request
curl -X DELETE "https://api.scrappy.gg/api/markdown-exports/abc123" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true}
/api/markdown-exports/[id]/pagesGet Export Pages
Get all pages from an export with their markdown content
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Export ID |
Example Request
curl -X GET "https://api.scrappy.gg/api/markdown-exports/abc123/pages" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"pages": [{"id": "page123","url": "https://example.com/page","title": "Page Title","markdown": "# Page Content..."}]}}
/api/markdown-exports/[id]/downloadDownload Export
Download export as ZIP or single markdown file
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Export ID |
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| format | string | Optional | Download formatOptions: zip, singleDefault: zip |
Example Request
curl -X GET "https://api.scrappy.gg/api/markdown-exports/abc123/download" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"note": "Returns file attachment"}
{"success": false,"error": {"code": "NOT_FOUND","message": "Export has no content"}}
/api/markdown-exports/[id]/retryRetry Export
Retry a failed export
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Export ID |
Example Request
curl -X POST "https://api.scrappy.gg/api/markdown-exports/abc123/retry" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"message": "Export retry started"}
Admin
Admin-only endpoints for platform management
3 endpoints/api/admin/usersList All Users
Get all users with their statistics (admin only)
Example Request
curl -X GET "https://api.scrappy.gg/api/admin/users" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"success": true,"data": {"users": [{"id": "abc123","email": "user@example.com","stats": {"projects": 5,"sources": 20,"leads": 500,"jobs": 50}}],"summary": {"total": 100,"active": 85,"newThisWeek": 10}}}
{"success": false,"error": {"code": "FORBIDDEN","message": "Admin access required"}}
/api/admin/metrics/summaryGet Metrics Summary
Get aggregated platform metrics (admin only). Note: Response does not use standard wrapper format.
Example Request
curl -X GET "https://api.scrappy.gg/api/admin/metrics/summary" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"database": {"users": 100,"projects": 500,"sources": 1000,"leads": 50000,"jobs": 2000},"queues": {"waiting": {"scraping": 5,"emailValidation": 10},"active": {"scraping": 2,"emailValidation": 5},"failed": {"scraping": 0,"emailValidation": 1}},"timestamp": "2024-01-01T00:00:00Z"}
/api/admin/metrics/prometheusPrometheus Query
Proxy Prometheus queries (admin only)
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| query | string | Required | Prometheus query string |
| type | string | Optional | Query typeOptions: instant, rangeDefault: instant |
| start | string | Optional | Start time for range queries (ISO 8601) |
| end | string | Optional | End time for range queries (ISO 8601) |
| step | string | Optional | Query resolution stepDefault: 15s |
Example Request
curl -X GET ?query=search term"https://api.scrappy.gg/api/admin/metrics/prometheus" \-H "Authorization: Bearer YOUR_API_KEY"
Responses
{"status": "success","data": {"resultType": "vector","result": [{"metric": {"__name__": "up"},"value": [1704067200,"1"]}]}}
{"error": "Query parameter is required"}
Webhooks
Webhook endpoints for external integrations
1 endpoint/api/webhooks/credCred.diy Webhook
Receive webhook events from cred.diy credits system. Requires signature verification.
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| x-cred-signature | header | Required | HMAC-SHA256 signature for verification |
| x-cred-event | header | Required | Event type |
Example Request
curl -X POST "https://api.scrappy.gg/api/webhooks/cred" \-H "Content-Type: application/json" \-d '{"x-cred-signature": "","x-cred-event": ""}'
Responses
{"received": true}
{"error": "Invalid signature"}
Infrastructure
Health checks and monitoring endpoints
1 endpoint/api/healthHealth Check
Check the health status of all services
Example Request
curl -X GET "https://api.scrappy.gg/api/health"
Responses
{"status": "healthy","services": {"database": {"status": "healthy","latency": 5},"redis": {"status": "healthy","latency": 2}}}
Need help? Check out our User Guides or contact support.