Submit SpiderPublicInstagram Job
/api/v1/jobs/spiderPublicInstagram/submitOverview
SpiderPublicInstagram extracts public profile data from Instagram using the direct web API. No Instagram login is required - it uses the web_profile_info endpoint to fetch profile information.
No Authentication Required: This worker uses Instagram's public web API endpoint. It does not require Instagram login credentials, making it safe and compliant for public data extraction.
Best For
- Extracting business contact information (email, phone)
- Getting follower/following counts and engagement metrics
- Downloading and hosting profile images permanently
- Verifying Instagram presence for lead enrichment
- Building influencer databases with verified metrics
Request Body
payloadobjectrequiredJob configuration payload
priorityintegerdefault: 5Job priority (0-10, higher = processed first).
Response
job_idstringUnique job identifier (UUID format).
typestringAlways spiderPublicInstagram.
statusstringInitial status: queued.
created_atstringJob creation timestamp (ISO 8601).
messagestringConfirmation message.
Example Request
- cURL - Basic
- cURL - With URL
- Python
- JavaScript
curl -X POST https://spideriq.ai/api/v1/jobs/spiderPublicInstagram/submit \
-H "Authorization: Bearer <your_token>" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"username": "natgeo"
}
}'
curl -X POST https://spideriq.ai/api/v1/jobs/spiderPublicInstagram/submit \
-H "Authorization: Bearer <your_token>" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"instagram_url": "https://instagram.com/natgeo",
"extract_contact_from_bio": true,
"store_profile_image": true
}
}'
import requests
url = "https://spideriq.ai/api/v1/jobs/spiderPublicInstagram/submit"
headers = {
"Authorization": "Bearer <your_token>",
"Content-Type": "application/json"
}
data = {
"payload": {
"username": "natgeo",
"extract_contact_from_bio": True,
"store_profile_image": True
}
}
response = requests.post(url, headers=headers, json=data)
job = response.json()
print(f"Job ID: {job['job_id']}")
const response = await fetch(
'https://spideriq.ai/api/v1/jobs/spiderPublicInstagram/submit',
{
method: 'POST',
headers: {
'Authorization': 'Bearer <your_token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
payload: {
username: 'natgeo',
extract_contact_from_bio: true,
store_profile_image: true
}
})
}
);
const job = await response.json();
console.log('Job ID:', job.job_id);
Example Response
{
"job_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "spiderPublicInstagram",
"status": "queued",
"created_at": "2026-01-18T14:30:00.000000",
"message": "Job submitted successfully"
}
Results Structure
When the job completes, results include:
Profile Data
usernamestringInstagram username.
full_namestringDisplay name on profile.
biostringProfile biography text.
profile_pic_urlstringOriginal Instagram CDN profile image URL.
Note: This URL may expire. Use profile_pic_url_hosted for permanent access.
profile_pic_url_hostedstringSpiderMedia hosted profile image URL (permanent).
Format: https://media.spideriq.ai/client-{id}/instagram_profile_{username}.jpg
external_urlstringWebsite link in profile bio.
Engagement Metrics
follower_countintegerNumber of followers.
following_countintegerNumber of accounts following.
post_countintegerTotal number of posts.
Account Type
is_business_accountbooleanWhether this is a business account.
is_professional_accountbooleanWhether this is a professional/creator account.
is_privatebooleanWhether the profile is private.
Note: Private profiles return limited data.
is_verifiedbooleanWhether the account has a verified badge.
Business Information
business_categorystringBusiness category (e.g., "Media/News Company", "Restaurant").
Only available for business accounts.
business_emailstringBusiness contact email from profile settings.
Only available for business accounts with email configured.
business_phonestringBusiness contact phone from profile settings.
Only available for business accounts with phone configured.
Extracted Contacts
bio_emailsarrayEmail addresses extracted from bio text using regex.
Example: ["contact@company.com", "sales@company.com"]
bio_phonesarrayPhone numbers extracted from bio text using regex.
Supports US format, international format, and raw digits.
Metadata
metadataobjectProcessing metadata.
Complete Results Example
{
"success": true,
"job_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "spiderPublicInstagram",
"status": "completed",
"processing_time_seconds": 4.52,
"data": {
"username": "natgeo",
"full_name": "National Geographic",
"bio": "Experience the world through the eyes of National Geographic photographers. Contact: partnerships@natgeo.com",
"profile_pic_url": "https://scontent-iad3-1.cdninstagram.com/v/t51.2885-19/...",
"profile_pic_url_hosted": "https://media.spideriq.ai/client-cli_abc123/instagram_profile_natgeo.jpg",
"external_url": "https://natgeo.com",
"follower_count": 283000000,
"following_count": 150,
"post_count": 32000,
"is_business_account": true,
"is_professional_account": true,
"is_private": false,
"is_verified": true,
"business_category": "Media/News Company",
"business_email": "contact@natgeo.com",
"business_phone": "+12025551234",
"bio_emails": ["partnerships@natgeo.com"],
"bio_phones": [],
"metadata": {
"instagram_id": "787132",
"source": "instagram_web_api",
"has_hosted_image": true
}
}
}
Processing Time
| Configuration | Typical Time |
|---|---|
| Basic profile extraction | 3-5 seconds |
| With profile image upload | 5-8 seconds |
| With mobile proxy | Add 2-5 seconds |
Rate Limiting
Instagram has strict rate limits:
| Limit Type | Threshold |
|---|---|
| Requests per hour per IP | ~200 |
| Built-in delay between requests | 3-10 seconds (randomized) |
Mobile Proxies Recommended
Datacenter IPs are quickly blocked by Instagram. For production use, mobile proxies from SpiderProxy are automatically assigned to provide carrier-grade IP addresses.
Error Cases
Invalid Input
{
"detail": "Either 'username' or 'instagram_url' must be provided"
}
Profile Not Found
{
"success": false,
"status": "failed",
"error": "Instagram profile not found: invalidusername123"
}
Rate Limited
{
"success": false,
"status": "failed",
"error": "Instagram rate limit exceeded. Retry after 300s"
}
IP Blocked
{
"success": false,
"status": "failed",
"error": "Instagram blocked the request. Mobile proxy required."
}
Private Profiles
Private profiles will return limited data:
{
"username": "private_user",
"full_name": "Private User",
"bio": "",
"is_private": true,
"follower_count": 500,
"following_count": 200,
"post_count": 50
}
Private Profile Limitations:
- No bio content
- No business information
- No external URL
- Profile image may still be available