Overview
Retrieve general information about the SpiderIQ API, including version, supported features, and system capabilities. This endpoint does not require authentication.
Authentication
No authentication required - This endpoint is publicly accessible.
Response
Link to API documentation
List of supported job typesValues:
spiderSite - Website scraping
spiderMaps - Google Maps scraping
Available features and capabilities
Default rate limit information
Available API endpoint categories
Example Request
curl https://spideriq.di-atomic.com/api/v1/system/info
Example Response
{
"name": "SpiderIQ API",
"version": "1.0.0",
"description": "High-performance web scraping and Google Maps data extraction API",
"documentation_url": "https://spideriq.di-atomic.com/api",
"supported_job_types": [
"spiderSite",
"spiderMaps"
],
"features": {
"ai_extraction": {
"enabled": true,
"description": "AI-powered content extraction with custom instructions",
"job_types": ["spiderSite"]
},
"screenshot_capture": {
"enabled": true,
"description": "Full-page screenshot capture with CDN storage",
"job_types": ["spiderSite"],
"storage": "Cloudflare R2"
},
"google_maps_api": {
"enabled": true,
"description": "Google Maps Places API integration",
"job_types": ["spiderMaps"]
},
"async_processing": {
"enabled": true,
"description": "Asynchronous job processing with RabbitMQ"
},
"rate_limiting": {
"enabled": true,
"description": "Per-client rate limiting"
}
},
"rate_limits": {
"default_per_minute": 100,
"burst_allowance": 20,
"custom_limits_available": true
},
"endpoints": {
"jobs": [
"/api/v1/jobs/submit",
"/api/v1/jobs/spiderSite/submit",
"/api/v1/jobs/spiderMaps/submit",
"/api/v1/jobs/{id}/status",
"/api/v1/jobs/{id}/results",
"/api/v1/jobs/list",
"/api/v1/jobs/{id}"
],
"system": [
"/api/v1/system/health",
"/api/v1/system/queue-stats",
"/api/v1/system/info"
]
},
"openapi_spec": "https://spideriq.di-atomic.com/api/v1/openapi.json",
"contact": {
"email": "admin@di-atomic.com",
"support": "https://spideriq.di-atomic.com"
}
}
Use Cases
Verify API Compatibility
Check if your required features are available:
import requests
def check_feature_support(required_features):
"""Verify required features are supported"""
url = "https://spideriq.di-atomic.com/api/v1/system/info"
response = requests.get(url)
info = response.json()
features = info.get("features", {})
missing = []
for feature in required_features:
if feature not in features:
missing.append(feature)
elif not features[feature].get("enabled", False):
missing.append(f"{feature} (disabled)")
if missing:
print(f"✗ Missing features: {', '.join(missing)}")
return False
else:
print("✓ All required features available")
return True
# Usage
required = ["ai_extraction", "screenshot_capture"]
check_feature_support(required)
Display API Version
Show API version in your application:
import requests
def get_api_version():
"""Get current API version"""
url = "https://spideriq.di-atomic.com/api/v1/system/info"
response = requests.get(url)
info = response.json()
return {
"name": info["name"],
"version": info["version"],
"description": info["description"]
}
# Usage
api_info = get_api_version()
print(f"Using {api_info['name']} v{api_info['version']}")
Generate API Client
Use system info to auto-configure API clients:
import requests
class SpiderIQClient:
def __init__(self, auth_token):
self.auth_token = auth_token
self.base_url = "https://spideriq.di-atomic.com"
self._load_api_info()
def _load_api_info(self):
"""Load API capabilities"""
response = requests.get(f"{self.base_url}/api/v1/system/info")
info = response.json()
self.version = info["version"]
self.supported_job_types = info["supported_job_types"]
self.features = info["features"]
self.rate_limit = info["rate_limits"]["default_per_minute"]
print(f"SpiderIQ API v{self.version} loaded")
print(f"Supported job types: {', '.join(self.supported_job_types)}")
def submit_job(self, url, job_type="spiderSite", **kwargs):
"""Submit a job with auto-validation"""
if job_type not in self.supported_job_types:
raise ValueError(f"Unsupported job type: {job_type}")
# Submit job...
pass
# Usage
client = SpiderIQClient("<your_token>")
Check Job Type Support
Validate job type before submission:
import requests
def is_job_type_supported(job_type):
"""Check if job type is supported"""
url = "https://spideriq.di-atomic.com/api/v1/system/info"
response = requests.get(url)
info = response.json()
supported = info.get("supported_job_types", [])
if job_type in supported:
print(f"✓ {job_type} is supported")
return True
else:
print(f"✗ {job_type} is not supported")
print(f"Supported types: {', '.join(supported)}")
return False
# Usage
is_job_type_supported("spiderSite") # True
is_job_type_supported("spiderImages") # False
Feature Detection
Check specific feature availability:
async function checkAIExtractionSupport() {
const response = await fetch(
'https://spideriq.di-atomic.com/api/v1/system/info'
);
const info = await response.json();
const aiFeature = info.features.ai_extraction;
if (aiFeature && aiFeature.enabled) {
console.log('✓ AI extraction is available');
console.log('Supported for:', aiFeature.job_types.join(', '));
return true;
} else {
console.log('✗ AI extraction is not available');
return false;
}
}
// Usage
const hasAI = await checkAIExtractionSupport();
if (hasAI) {
// Use AI extraction feature
}
Documentation Link
Get link to documentation programmatically:
import requests
import webbrowser
def open_documentation():
"""Open API documentation in browser"""
url = "https://spideriq.di-atomic.com/api/v1/system/info"
response = requests.get(url)
info = response.json()
doc_url = info.get("documentation_url")
if doc_url:
print(f"Opening documentation: {doc_url}")
webbrowser.open(doc_url)
else:
print("Documentation URL not available")
# Usage
open_documentation()
Response Fields Explained
Features Object
Each feature includes:
- enabled - Whether the feature is currently active
- description - What the feature does
- job_types - Which job types support this feature (if applicable)
- Additional fields - Feature-specific metadata
Rate Limits Object
- default_per_minute - Standard rate limit for all clients
- burst_allowance - Number of requests allowed in burst
- custom_limits_available - Whether custom limits can be requested
Endpoints Object
Lists all available endpoints grouped by category:
- jobs - Job management endpoints
- clients - Client account endpoints
- system - System information endpoints
Current version: 1.0.0The API follows semantic versioning (MAJOR.MINOR.PATCH).
Breaking changes: Major version changes (e.g., 1.x.x → 2.x.x) may include breaking changes. Monitor this endpoint for version updates.
Best Practices
Cache system info: This data changes infrequently. Cache it for 24 hours to reduce unnecessary requests.
Feature detection: Use feature flags to conditionally enable functionality in your application.
Don’t hardcode: Use this endpoint to discover available features rather than hardcoding assumptions about API capabilities.