"
}
```
```json 400 theme={null}
{
"detail": "Invalid parameters. Check account hash and type."
}
```
```json 404 theme={null}
{
"detail": "Account not found."
}
```
# Update Squid
Source: https://docs.lobstr.io/docs/update-squid
POST https://api.lobstr.io/v1/squids/{squid_hash}
Update squid settings including parameters, concurrency, scheduling, and delivery integrations
This endpoint updates an existing squid's settings using its hash ID. You can configure crawler parameters, execution settings, scheduling, notifications, and data delivery integrations.
### Squid Settings
Display name for the squid. Example: `"My Custom Squid"`
Enable (true) or disable (false) the squid. Example: `true`
Number of concurrent tasks to run simultaneously (1-20). Example: `2`
Stop after all tasks complete (true) or run until credits exhausted (false). Example: `false`
Export only unique results, removing duplicates. Example: `true`
Remove newlines from exported data. Example: `true`
Notification preference: null (no notifications), "on\_success", or "on\_error". Example: `"on_success"`
Cron expression for scheduling automated runs. Example: `"0 10 * * *"`
Timezone identifier for schedule execution. Example: `"Europe/Paris"`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Path Parameters
The unique identifier (hash) of the squid to update. Example: `e86b29c032024b66aff529e1d43c2bd7`
The params object structure depends on the crawler. Use Get Crawler Parameters endpoint to see available options before updating.
Optional function parameters (in params.functions) cost extra credits per row. Check the crawler details for pricing.
Setting is\_active to false will prevent the squid from running. Use this to temporarily pause a squid without deleting it.
You can update just one field at a time - send only the fields you want to change. Other settings remain unchanged.
Use cron\_expression and timezone to schedule recurring runs. Common patterns: '0 9 \* \* \*' (daily at 9am), '0 0 \* \* 0' (weekly on Sunday).
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/e86b29c032024b66aff529e1d43c2bd7" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Squid Name",
"concurrency": 2,
"is_active": true,
"params": {
"max_results": 150,
"functions": {
"extract_emails_from_website": true,
"collect_business_details": true,
"fetch_business_images": false
},
"ratings": "4.0+",
"country": "United States",
"language": "English (United States)"
},
"run_notify": "on_success"
}'
```
```python Python theme={null}
import requests
squid_id = "e86b29c032024b66aff529e1d43c2bd7"
url = f"https://api.lobstr.io/v1/squids/{squid_id}"
headers = {
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json"
}
payload = {
"name": "Updated Squid Name",
"concurrency": 2,
"is_active": True,
"params": {
"max_results": 150,
"functions": {
"extract_emails_from_website": True,
"collect_business_details": True,
"fetch_business_images": False
},
"ratings": "4.0+",
"country": "United States",
"language": "English (United States)"
},
"run_notify": "on_success"
}
response = requests.post(url, headers=headers, json=payload)
result = response.json()
print(f"Squid updated successfully!")
print(f"Name: {result['name']}")
print(f"Concurrency: {result.get('concurrency', 'N/A')}")
print(f"Notifications: {result.get('run_notify', 'None')}")
```
## Response
```json 201 theme={null}
{
"name": "Updated Squid Name",
"no_line_breaks": true,
"is_active": true,
"params": {
"max_results": 150,
"functions": {
"extract_emails_from_website": true,
"collect_business_details": true,
"fetch_business_images": false
},
"ratings": "4.0+",
"country": "United States",
"language": "English (United States)"
},
"to_complete": false,
"run_notify": "on_success",
"export_unique_results": true
}
```
# Update Squid Chain
Source: https://docs.lobstr.io/docs/update-squid-chain
PATCH https://api.lobstr.io/v1/squids/{id}/chain
Update the chain configuration for a squid
Updates settings on an existing chain configuration. Only the fields you include in the request body are updated.
If the target squid has already been created by a previous chain trigger, updating `cluster_concurrency` will apply the new value to that squid immediately.
## Path Parameters
Hash ID of the source squid. Example: `"e86b29c032024b66aff529e1d43c2bd7"`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Request Body
Whether downstream runs start automatically on task queue.
Update the name of the target squid.
Update the concurrency of the target squid.
## Code Examples
```bash cURL theme={null}
curl -X PATCH "https://api.lobstr.io/v1/squids/e86b29c032024b66aff529e1d43c2bd7/chain" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"autostart": false,
"cluster_concurrency": 5
}'
```
```python Python theme={null}
import requests
url = "https://api.lobstr.io/v1/squids/e86b29c032024b66aff529e1d43c2bd7/chain"
headers = {
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json"
}
payload = {
"autostart": False,
"cluster_concurrency": 5
}
response = requests.patch(url, headers=headers, json=payload)
print(response.json())
```
## Response
```json 200 theme={null}
{
"id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"target_module": {
"id": "9a3f1c8b2e7d4a56f0e1b2c3d4e5f678",
"public_name": "Google Maps Reviews Scraper",
"name": "googlemapreviews_matrix",
"max_concurrency": 10
},
"target_cluster": {
"id": "f7e8d9c0b1a2f7e8d9c0b1a2f7e8d9c0",
"hash_value": "f7e8d9c0b1a2f7e8d9c0b1a2f7e8d9c0",
"name": "Reviews (chained)"
},
"field_map": {"url": "url"},
"is_active": true,
"autostart": false,
"cluster_name": "Reviews (chained)",
"cluster_concurrency": 5,
"created_at": "2026-04-28T10:00:00Z"
}
```
```json 404 theme={null}
{
"error": "No chain configured on this squid."
}
```
# Upload Tasks
Source: https://docs.lobstr.io/docs/upload-tasks
POST https://api.lobstr.io/v1/tasks/upload
Upload a CSV/TSV file containing multiple tasks for a squid
This endpoint allows you to upload a file (CSV/TSV) containing multiple tasks for a specific squid. The file should contain task parameters in columns matching the crawler's expected keys. This is ideal for bulk task creation.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be multipart/form-data for file upload. Value: `multipart/form-data`
## Form Data Parameters
CSV or TSV file containing task data. Column headers should match crawler parameter keys. Example: `tasks.csv`
The hash ID of the squid to add tasks to. Example: `"a1b2c3d4e5f6g7h8i9j0"`
## Response Field Explanations
Upload task identifier for tracking progress. Example: `"427a7bfc54cf4ce483d83ba23425164b"`
Always "task\_upload". Example: `"task_upload"`
Use the returned task ID with Check Upload Status to monitor the upload progress.
CSV column headers must match the crawler's expected parameter keys (e.g., 'url', 'city', 'activity').
Large files may take time to process. Always check upload status before running the squid.
TSV (tab-separated) files are also supported and may be easier to work with for URLs containing commas.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks/upload" \
-H "Authorization: Token YOUR_API_KEY" \
-F "file=@tasks.csv" \
-F "squid=a1b2c3d4e5f6g7h8i9j0"
```
```python Python theme={null}
import requests
url = "https://api.lobstr.io/v1/tasks/upload"
headers = {
"Authorization": "Token YOUR_API_KEY"
}
# Prepare file upload
with open("tasks.csv", "rb") as f:
files = {"file": ("tasks.csv", f, "text/csv")}
data = {"squid": "a1b2c3d4e5f6g7h8i9j0"}
response = requests.post(url, headers=headers, files=files, data=data)
result = response.json()
upload_task_id = result['id']
print(f"Upload started with ID: {upload_task_id}")
print("Use Check Upload Status endpoint to monitor progress")
```
## Response
```json 200 theme={null}
{
"id": "427a7bfc54cf4ce483d83ba23425164b",
"object": "task_upload"
}
```
# Get User Profile
Source: https://docs.lobstr.io/docs/user-me
GET https://api.lobstr.io/v1/me
Retrieve authenticated user's profile data including personal details, account status, and subscription information
This endpoint returns the authenticated user's complete profile data in a single API call. Use it to verify authentication, retrieve user details, and check account status.
This is typically the first endpoint you'll call after authentication to confirm your credentials are working correctly.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Content type of the request. Value: `application/json`
## Response Field Explanations
User's first name. Example: `"John"`
User's last name. Example: `"Doe"`
User's email address. Example: `"user@example.com"`
Whether the user's email address has been verified. Example: `true`
List of active subscription plan objects for the user.
Total number of times the user has logged in. Example: `42`
URL of the user's profile image, or `null` if not set.
Whether the user has staff/admin access. Example: `false`
The user's credit reset interval (e.g., monthly billing cycle). Example: `"monthly"`
Use this endpoint to verify your authentication is working before making other API calls. A successful response means your API key is valid.
The response includes rate limit information in the headers. Check the `X-RateLimit-Remaining` header to monitor your API usage.
## Code Examples
```bash cURL theme={null}
curl -X GET "https://api.lobstr.io/v1/me" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json"
```
```python Python theme={null}
import requests
headers = {
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
}
response = requests.get(
"https://api.lobstr.io/v1/me",
headers=headers
)
print(response.json())
```
## Response
```json 200 theme={null}
{
"first_name": "John",
"last_name": "Doe",
"email": "user@example.com",
"email_verified": true,
"plan": [],
"login_count": 42,
"profile_image": null,
"is_staff": false,
"credit_interval": "monthly"
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/amazon-reviews-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Amazon Reviews Scraper squid
Add URLs or inputs to your **Amazon Reviews Scraper** squid. Each task object must include the required fields below.
Crawler ID: `787abfafd394be3b12ee2ac7d14303fe`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task supports the fields below.
## Task Fields
# Credit Cost
Source: https://docs.lobstr.io/examples/amazon-reviews-scraper/credit-cost
Credit cost for the Amazon Reviews Scraper
1 credit per review.
# Get Results
Source: https://docs.lobstr.io/examples/amazon-reviews-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Amazon Reviews Scraper
Retrieve scraped data from your **Amazon Reviews Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique identifier for the Amazon customer review. Example: `R20VZPJE39ZA0O`
Direct URL to the review on Amazon. Example: `https://www.amazon.com/gp/customer-reviews/R20VZPJE39ZA0O`
Amazon product page URL. Example: `https://www.amazon.com/dp/B0D3V4T7K1`
Amazon Standard Identification Number (ASIN) for the product. Example: `B0D3V4T7K1`
Title or headline of the customer review. Example: `1.0 out of 5 stars Disappointing Read`
Full text content of the customer review. Example: `It reads like AI wrote it. Sort paragraphs and the usage of bullet points is excessive. The book has minimal ideas repeated over and over again. It felt like a weird read so I tried to look up the author and other works and could not find much of anything about the author. There is only one blurry photo and no social media. Very disappointing.`
Star rating given by the reviewer (1 to 5). Example: `1`
Review date as displayed on Amazon (e.g. Reviewed in the United States on January 26, 2026). Example: `Reviewed in the United States on January 26, 2026`
Review publication date in ISO 8601 format. Example: `2026-01-26T00:00:00.000Z`
Whether the reviewer purchased the product on Amazon (Verified Purchase). Example: `true`
Format or variant of the product reviewed (e.g. Paperback, Kindle Edition). Example: `Format: Paperback`
Number of users who marked the review as helpful. Example: `3`
List of image URLs attached to the customer review. Example: `['https://m.media-amazon.com/images/I/81jt3hLUmNL._SY88.jpg']`
Display name of the reviewer on Amazon. Example: `Autumn Autumn`
URL to the reviewer's Amazon profile page. Example: `https://www.amazon.com/gp/profile/amzn1.account.AFKX2WHZM2VJ7RP4XHRCJD7JXDXQ/ref=cm_cr_getr_d_gw_btm`
URL of the reviewer's Amazon avatar image. Example: `https://m.media-amazon.com/images/S/amazon-avatars-global/default._CR0,0,1024,1024_SX48_.png`
Total number of written reviews for the product on Amazon. Example: `128`
Total number of ratings for the product (including those without a written review). Example: `169`
Country where the review was posted (e.g. the United States). Example: `the United States`
URL to the product's reviews listing page on Amazon. Example: `https://www.amazon.com/Talk-Anyone-Anytime-Anywhere-Communication/product-reviews/B0D3V4T7K1`
Whether the review was submitted through the Amazon Vine program. Example: `false`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 26942,
"object": "result",
"squid": "79adf8711330a32e9a07e1748c362f5d",
"run": "0ff156b7279b996ab65ab2d24a129a5c",
"review_id": "R20VZPJE39ZA0O",
"review_url": "https://www.amazon.com/gp/customer-reviews/R20VZPJE39ZA0O",
"product_url": "https://www.amazon.com/dp/B0D3V4T7K1",
"asin": "B0D3V4T7K1",
"review_title": "1.0 out of 5 stars Disappointing Read",
"review_text": "It reads like AI wrote it. Sort paragraphs and the usage of bullet points is excessive. The book has minimal ideas repeated over and over again. It felt like a weird read so I tried to look up the author and other works and could not find much of anything about the author. There is only one blurry photo and no social media. Very disappointing.",
"review_rating": 1,
"review_date": "Reviewed in the United States on January 26, 2026",
"review_date_raw": "2026-01-26T00:00:00.000Z",
"review_verified": true,
"review_format": "Format: Paperback",
"review_helpful_count": 3,
"review_images": [
"https://m.media-amazon.com/images/I/81jt3hLUmNL._SY88.jpg"
],
"author_name": "Autumn Autumn",
"author_profile_url": "https://www.amazon.com/gp/profile/amzn1.account.AFKX2WHZM2VJ7RP4XHRCJD7JXDXQ/ref=cm_cr_getr_d_gw_btm",
"author_avatar": "https://m.media-amazon.com/images/S/amazon-avatars-global/default._CR0,0,1024,1024_SX48_.png",
"total_reviews": 128,
"total_ratings": 169,
"country": "the United States",
"review_category_url": "https://www.amazon.com/Talk-Anyone-Anytime-Anywhere-Communication/product-reviews/B0D3V4T7K1",
"is_amazon_vine": false,
"functions": null,
"native_id": 26942
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/amazon-reviews-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Amazon Reviews Scraper settings
Configure your Amazon Reviews Scraper squid settings. Control how reviews are sorted, filtered, and limited.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **sort\_by** | string | recent | Sort order for reviews: `recent`, `top_reviews` |
| **filter\_by\_star** | string | all\_stars | Filter by star rating: `all_stars`, `five_star`, `four_star`, `three_star`, `two_star`, `one_star`, `positive`, `critical` |
| **reviewer\_type** | string | all\_reviewers | Filter by reviewer type: `all_reviewers`, `verified_purchase_only` |
| **media\_type** | string | text\_image\_video | Filter by review media: `text_image_video`, `image_and_video_only` |
| **format\_type** | string | all\_variants | Filter by product variant: `all_variants`, `current_format` |
| **filter\_by\_keyword** | string | null | Only return reviews containing this keyword |
| **max\_results** | integer | 100 | Maximum number of reviews to collect per product |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique reviews across all tasks in the run |
| **scrape\_max\_reviews** | boolean | false | If true, attempt to collect all available reviews |
| **fetch\_since** | string | null | Stop scraping when items older than this threshold are reached (based on `published_at`). Use a relative duration (24h, 7d, 2w) or an absolute date (YYYY-MM-DD) |
| **fetch\_since\_timezone** | string | null | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Only applies when `fetch_since` is an absolute date — ignored for relative values like `24h` or `7d`. See [supported timezones](/docs/timezones). |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
This scraper requires a synced Amazon account. Add your Amazon cookies in the Accounts section before running.
Use `filter_by_star: critical` to monitor negative feedback, or `sort_by: recent` combined with `fetch_since` to track new reviews.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Amazon Reviews Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"sort_by": "recent",
"filter_by_star": "all_stars",
"reviewer_type": "verified_purchase_only",
"media_type": "text_image_video",
"format_type": "all_variants",
"max_results": 100,
"fetch_since": "7d"
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Amazon Reviews Scraper (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"sort_by": "recent",
"filter_by_star": "all_stars",
"reviewer_type": "verified_purchase_only",
"max_results": 100,
"fetch_since": "7d"
}
}
)
data = response.json()
print(f"Settings updated: {data['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Amazon Reviews Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"sort_by": "recent",
"filter_by_star": "all_stars",
"reviewer_type": "verified_purchase_only",
"max_results": 100,
"fetch_since": "7d"
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/autoscout24-listings-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your AutoScout24 Listings Scraper squid
Add URLs or inputs to your **AutoScout24 Listings Scraper** squid. Each task object must include the required fields below.
Crawler ID: `0a09add2a3c455037a972db81b1c0219`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task supports the fields below.
## Task Fields
# Credit Cost
Source: https://docs.lobstr.io/examples/autoscout24-listings-scraper/credit-cost
Credit cost for the AutoScout24 Listings Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Listings | 1 | 1 credit per listing. |
| Collect Listing Details | 4 | 4 credits per listing. |
# Get Results
Source: https://docs.lobstr.io/examples/autoscout24-listings-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from AutoScout24 Listings Scraper
Retrieve scraped data from your **AutoScout24 Listings Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique identifier for the vehicle listing on AutoScout24. Example: `22c73c4a-a00e-4efd-bfdf-c331d650a421`
Direct URL to the vehicle listing on AutoScout24. Example: `https://www.autoscout24.com/offers/toyota-land-cruiser-2-8l-diesel-48v-executive-lager-diesel-grey-22c73c4a-a00e-4efd-bfdf-c331d650a421`
Full listing title as shown on AutoScout24. Example: `2,8l Diesel 48V Executive LAGER`
Secondary subtitle or short vehicle summary on AutoScout24. Example: `2,8l Diesel 48V Executive LAGER`
Vehicle manufacturer or brand (e.g. BMW, Volkswagen). Example: `Toyota`
Vehicle model name. Example: `Land Cruiser`
Listed price of the vehicle. Example: `79950`
ISO 3-letter currency code of the listed price. Example: `EUR`
Odometer reading of the vehicle. Example: `5000`
Type of fuel the vehicle uses (e.g. Petrol, Diesel, Electric). Example: `Diesel`
Date of the vehicle's first registration. Example: `12/2025`
Engine power including value and unit (e.g. 150 kW / 204 hp). Example: `151 kW (205 hp)`
Type of seller (private individual or professional dealer). Example: `Dealer`
Name of the individual or dealership selling the vehicle. Example: `Autohaus Geschw.Schneider GmbH`
Location of the seller or vehicle on AutoScout24. Example: `Aalen`
Postal code of the seller's location. Example: `73431`
Full description text provided by the seller. Example: `Getriebe Automatik Technik Allrad Bordcomputer Sperrdifferential Partikelfilter Volldigitales Kombiinstrument Assistenten Totwinkel-Assistent Müdigkeitserkennung Verkehrszeichenerkennung Regensensor Fernlichtassistent Lichtsensor Notbremsassistent Berganfahrassistent Bergabfahrassistent Spurhalteassistent Abstandsregeltempomat Abstands-/Kollisionswarner Komfort Servolenkung Zentralverriegelung Elektrischer Fensterheber Lederausstattung Sitzheizung Elektrische Aussenspiegel Tempomat Multifunktionslenkrad Keyless Go Startfunktion Elektrische Sitze Innenspiegel autom. abblendbar Mittelarmlehne Innenraumfilter Lenksaeule einstellbar ParkDistanceControl vorne und hinten Elektrische Heckklappe Beheizbare Frontscheibe klimatisierte Sitze Keyless Entry Ambientebeleuchtung Lordosenstütze Lederlenkrad Geschwindigkeitsbegrenzungsanlage Klimaautomatik-3-Zonen Funkfernbedienung Sicht LED-Hauptscheinwerfer LED-Tagfahrlicht 360 Grad Kamera LED-Rueckleuchten Nebelscheinwerfer Scheinwerferregulierung Scheinwerferreinigung Privacyverglasung Sicherheit ABS Airbag Beifahrer-Airbag Wegfahrsperre Seitenairbags Alarmanlage ESP Antriebsschlupfregelung Reifendruckkontrolle Traktionskontrolle Kopfairbag Knieairbag Notrufsystem Pannenkit Notrad Airbag hinten Entertainment Navigationssystem Radio Telefonvorbereitung USB-Anschluss Bluetooth Freisprecheinrichtung Apple CarPlay Android Auto Sprachsteuerung DAB Touchscreen Induktionsladen für Smartphones Umwelt Grüne Umweltplakette Qualität Garantie Nichtraucherfahrzeug Sonstiges Metallic Alufelgen Dachreling Lenkradheizung Sommerreifen Gepäckraumabtrennung`
Contact phone number of the seller. Example: `+497361930114`
Formatted price label shown on the listing (e.g. Fixed price, Negotiable)
Type of gearbox (e.g. Manual, Automatic). Example: `Automatic`
Body style of the vehicle (e.g. Sedan, SUV, Hatchback, Convertible). Example: `SUV/Off-Road/Pick-Up`
Number of doors on the vehicle. Example: `5`
Number of seats in the vehicle. Example: `5`
Engine displacement in cubic centimetres (cc). Example: `2755`
Number of engine cylinders. Example: `4`
Unladen weight of the vehicle in kilograms
European emission standard class of the vehicle (e.g. Euro 6). Example: `Euro 6d`
German emissions sticker (Umweltplakette) category. Example: `4 (Green)`
Fuel consumption figures (e.g. combined, city, highway)
Drivetrain configuration (e.g. Front-wheel drive, All-wheel drive). Example: `4WD`
Number of previous registered owners of the vehicle. Example: `1`
Status of the vehicle's technical inspection (e.g. TÜV in Germany). Example: `11/2028`
Date of the vehicle's last service or maintenance
Production or manufacture date of the vehicle
List of standard and optional equipment included with the vehicle. Example: `['360° camera', 'Air conditioning', 'Armrest', 'Automatic climate control, 3 zones', 'Cruise control', 'Electric tailgate', 'Electrical side mirrors', 'Electrically adjustable seats', 'Electrically heated windshield', 'Heated steering wheel', 'Hill Holder', 'Keyless central door lock', 'Leather seats', 'Leather steering wheel', 'Light sensor', 'Lumbar support', 'Multi-function steering wheel', 'Navigation system', 'Park Distance Control', 'Parking assist system camera', 'Parking assist system sensors front', 'Parking assist system sensors rear', 'Power windows', 'Rain sensor', 'Seat heating', 'Seat ventilation', 'Tinted windows', 'Android Auto', 'Apple CarPlay', 'Bluetooth', 'Digital cockpit', 'Digital radio', 'Hands-free equipment', 'Induction charging for smartphones', 'On-board computer', 'Radio', 'USB', 'ABS', 'Adaptive Cruise Control', 'Alarm system', 'Bi-Xenon headlights', 'Blind spot monitor', 'Central door lock', 'Central door lock with remote control', 'Daytime running lights', 'Distance warning system', 'Driver drowsiness detection', 'Driver-side airbag', 'Electronic stability control', 'Emergency brake assistant', 'Emergency system', 'Fog lights', 'Full-LED headlights', 'Head airbag', 'High beam assist', 'Immobilizer', 'Lane departure warning system', 'LED Daytime Running Lights', 'LED Headlights', 'Passenger-side airbag', 'Power steering', 'Rear airbag', 'Side airbag', 'Speed limit control system', 'Tire pressure monitoring system', 'Traction control', 'Traffic sign recognition', 'Xenon headlights', 'Alloy wheels', 'Ambient lighting', 'Automatically dimming interior mirror', 'Cargo barrier', 'Emergency tyre', 'Emergency tyre repair kit', 'Headlight washer system', 'Particle filter', 'Roof rack', 'Summer tyres', 'Touch screen', 'Voice Control']`
Exterior colour of the vehicle. Example: `Grey`
Official colour name used by the manufacturer. Example: `Dark grey`
Type of paint finish (e.g. Metallic, Solid, Pearl). Example: `Metallic`
Type of interior upholstery (e.g. Leather, Fabric, Alcantara). Example: `Full leather`
Colour of the interior upholstery. Example: `Black`
Version or trim level of the vehicle. Example: `2,8l Diesel 48V Executive LAGER`
List of all vehicle image URLs from the listing. Example: `['https://prod.pictures.autoscout24.net/listing-images/22c73c4a-a00e-4efd-bfdf-c331d650a421_f740629d-2f21-4368-9477-27f443e6ee95.jpg/1920x1080.webp', 'https://prod.pictures.autoscout24.net/listing-images/22c73c4a-a00e-4efd-bfdf-c331d650a421_32e930da-99a2-4d00-a82d-66ee49356683.jpg/1920x1080.webp']`
Total number of images in the listing. Example: `9`
Category of vehicle (e.g. Car, Motorcycle, Truck, Van). Example: `Car`
Country where the vehicle is listed for sale. Example: `DE`
Position of the listing in the search results. Example: `4`
Date the listing was first published on AutoScout24. Example: `2026-03-22T13:00:19+00:00`
Date and time the listing was published on AutoScout24 (UTC), as reported by AutoScout24 itself. Only available when `get_listing_details` is enabled.
AutoScout24's price evaluation band for this listing, from 0 (far below the market median) to 6 (far above it). Empty when AutoScout24 has no comparable vehicles to rate this listing against.
AutoScout24's own wording for the price evaluation, in the language of the searched AutoScout24 domain. AutoScout24 only publishes a label for its three "good deal" bands (`price_rating` 1, 2 and 3).
Whether VAT on this price is deductible (TVA récupérable), as declared by the seller.
The price bands AutoScout24 computed for this vehicle's market cohort: one entry per `price_rating` band, with its minimum and maximum price. Empty when AutoScout24 has no comparable vehicles.
Whether the seller declared the vehicle as accident-damaged. Empty when the seller did not answer: an empty value means unknown, not "no accident".
Whether the seller declared a complete service history. Empty when the seller did not answer.
Whether the seller declared the vehicle as non-smoking. Empty when the seller did not answer.
Whether the seller declared the cabin as clean/undamaged. Empty when the seller did not answer.
Equipment AutoScout24 files under Safety & Security, in the language of the searched AutoScout24 domain. Subset of the flat `equipment` list.
Equipment AutoScout24 files under Comfort & Convenience. Subset of the flat `equipment` list.
Equipment AutoScout24 files under Entertainment & Media. Subset of the flat `equipment` list.
Equipment AutoScout24 files under Extras. Subset of the flat `equipment` list.
The seller's second phone number, when they published more than one. Empty when the seller only published one number.
The kind of line `phone_2` is, as labelled by the seller (e.g. `Office`, `Mobile`).
AutoScout24's customer id for the dealer selling this vehicle. Stable across all of that dealer's listings. Empty for private sellers.
URL of the dealer's own AutoScout24 profile page. Empty for private sellers.
The year the dealer became an AutoScout24 customer. AutoScout24 only publishes the year, not a full date. Empty for private sellers.
Combined CO2 emissions in g/km, exactly as AutoScout24 publishes them. Empty when AutoScout24 reports no value. AutoScout24 returns a literal `0` for a share of combustion-engine listings — see `co2_is_estimated`.
True when the CO2 figure should not be read as a measurement. Carries AutoScout24's own "fallback estimate" flag, and is also set when `co2_emissions` is 0 while AutoScout24 itself describes the vehicle as a combustion engine.
Latitude of the vehicle's location, as published by AutoScout24. Only available when `get_listing_details` is enabled.
Longitude of the vehicle's location, as published by AutoScout24. Only available when `get_listing_details` is enabled.
The dealer's average customer rating on AutoScout24, out of 5. Empty when the dealer has no ratings yet — a dealer nobody has rated is never reported as a 0.
How many customer reviews the dealer has on AutoScout24. `0` is a real value here: the dealer has no reviews.
Share of the dealer's reviewers who recommend them, in percent. Empty when the dealer has no ratings yet.
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 65046,
"object": "result",
"squid": "b860b503c80b2095722270c797a3693e",
"run": "65c5caa0c610093f78f14d8c44436c86",
"listing_id": "22c73c4a-a00e-4efd-bfdf-c331d650a421",
"url": "https://www.autoscout24.com/offers/toyota-land-cruiser-2-8l-diesel-48v-executive-lager-diesel-grey-22c73c4a-a00e-4efd-bfdf-c331d650a421",
"title": "2,8l Diesel 48V Executive LAGER",
"subtitle": "2,8l Diesel 48V Executive LAGER",
"make": "Toyota",
"model": "Land Cruiser",
"price": 79950,
"currency": "EUR",
"mileage": 5000,
"fuel_type": "Diesel",
"first_registration": "12/2025",
"power": "151 kW (205 hp)",
"seller_type": "Dealer",
"seller_name": "Autohaus Geschw.Schneider GmbH",
"location": "Aalen",
"postal_code": "73431",
"description": "Getriebe Automatik Technik Allrad Bordcomputer Sperrdifferential Partikelfilter Volldigitales Kombiinstrument Assistenten Totwinkel-Assistent Müdigkeitserkennung Verkehrszeichenerkennung Regensensor Fernlichtassistent Lichtsensor Notbremsassistent Berganfahrassistent Bergabfahrassistent Spurhalteassistent Abstandsregeltempomat Abstands-/Kollisionswarner Komfort Servolenkung Zentralverriegelung Elektrischer Fensterheber Lederausstattung Sitzheizung Elektrische Aussenspiegel Tempomat Multifunktionslenkrad Keyless Go Startfunktion Elektrische Sitze Innenspiegel autom. abblendbar Mittelarmlehne Innenraumfilter Lenksaeule einstellbar ParkDistanceControl vorne und hinten Elektrische Heckklappe Beheizbare Frontscheibe klimatisierte Sitze Keyless Entry Ambientebeleuchtung Lordosenstütze Lederlenkrad Geschwindigkeitsbegrenzungsanlage Klimaautomatik-3-Zonen Funkfernbedienung Sicht LED-Hauptscheinwerfer LED-Tagfahrlicht 360 Grad Kamera LED-Rueckleuchten Nebelscheinwerfer Scheinwerferregulierung Scheinwerferreinigung Privacyverglasung Sicherheit ABS Airbag Beifahrer-Airbag Wegfahrsperre Seitenairbags Alarmanlage ESP Antriebsschlupfregelung Reifendruckkontrolle Traktionskontrolle Kopfairbag Knieairbag Notrufsystem Pannenkit Notrad Airbag hinten Entertainment Navigationssystem Radio Telefonvorbereitung USB-Anschluss Bluetooth Freisprecheinrichtung Apple CarPlay Android Auto Sprachsteuerung DAB Touchscreen Induktionsladen für Smartphones Umwelt Grüne Umweltplakette Qualität Garantie Nichtraucherfahrzeug Sonstiges Metallic Alufelgen Dachreling Lenkradheizung Sommerreifen Gepäckraumabtrennung",
"phone": "+497361930114",
"price_label": null,
"gearbox": "Automatic",
"body_type": "SUV/Off-Road/Pick-Up",
"doors": 5,
"seats": 5,
"displacement_cc": 2755,
"cylinders": 4,
"weight_kg": null,
"emission_class": "Euro 6d",
"emissions_sticker": "4 (Green)",
"fuel_consumption": null,
"drivetrain": "4WD",
"number_of_previous_owners": 1,
"general_inspection": "11/2028",
"last_service": null,
"production_date": null,
"equipment": [
"360° camera",
"Air conditioning",
"Armrest",
"Automatic climate control, 3 zones",
"Cruise control",
"Electric tailgate",
"Electrical side mirrors",
"Electrically adjustable seats",
"Electrically heated windshield",
"Heated steering wheel",
"Hill Holder",
"Keyless central door lock",
"Leather seats",
"Leather steering wheel",
"Light sensor",
"Lumbar support",
"Multi-function steering wheel",
"Navigation system",
"Park Distance Control",
"Parking assist system camera",
"Parking assist system sensors front",
"Parking assist system sensors rear",
"Power windows",
"Rain sensor",
"Seat heating",
"Seat ventilation",
"Tinted windows",
"Android Auto",
"Apple CarPlay",
"Bluetooth",
"Digital cockpit",
"Digital radio",
"Hands-free equipment",
"Induction charging for smartphones",
"On-board computer",
"Radio",
"USB",
"ABS",
"Adaptive Cruise Control",
"Alarm system",
"Bi-Xenon headlights",
"Blind spot monitor",
"Central door lock",
"Central door lock with remote control",
"Daytime running lights",
"Distance warning system",
"Driver drowsiness detection",
"Driver-side airbag",
"Electronic stability control",
"Emergency brake assistant",
"Emergency system",
"Fog lights",
"Full-LED headlights",
"Head airbag",
"High beam assist",
"Immobilizer",
"Lane departure warning system",
"LED Daytime Running Lights",
"LED Headlights",
"Passenger-side airbag",
"Power steering",
"Rear airbag",
"Side airbag",
"Speed limit control system",
"Tire pressure monitoring system",
"Traction control",
"Traffic sign recognition",
"Xenon headlights",
"Alloy wheels",
"Ambient lighting",
"Automatically dimming interior mirror",
"Cargo barrier",
"Emergency tyre",
"Emergency tyre repair kit",
"Headlight washer system",
"Particle filter",
"Roof rack",
"Summer tyres",
"Touch screen",
"Voice Control"
],
"colour": "Grey",
"manufacturer_colour": "Dark grey",
"paint": "Metallic",
"upholstery": "Full leather",
"upholstery_colour": "Black",
"version": "2,8l Diesel 48V Executive LAGER",
"image_urls": [
"https://prod.pictures.autoscout24.net/listing-images/22c73c4a-a00e-4efd-bfdf-c331d650a421_f740629d-2f21-4368-9477-27f443e6ee95.jpg/1920x1080.webp",
"https://prod.pictures.autoscout24.net/listing-images/22c73c4a-a00e-4efd-bfdf-c331d650a421_32e930da-99a2-4d00-a82d-66ee49356683.jpg/1920x1080.webp"
],
"image_count": 9,
"vehicle_type": "Car",
"listing_country": "DE",
"position": 4,
"first_online_date": "2026-03-22T13:00:19+00:00",
"functions": null,
"native_id": 65046
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/autoscout24-listings-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the AutoScout24 Listings Scraper settings
Configure your AutoScout24 Listings Scraper squid settings. Control pagination, result limits, time filters, and whether to fetch full listing details.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_pages** | integer | 99 | Maximum number of search result pages to scrape (max: 99) |
| **max\_results** | integer | unlimited | Maximum number of listings to collect per task |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the run |
| **fetch\_since** | string | null | Stop scraping when items older than this threshold are reached (based on `published_at`). Use a relative duration (24h, 7d, 2w) or an absolute date (YYYY-MM-DD HH:MM:SS) |
| **fetch\_since\_timezone** | string | null | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Only applies when `fetch_since` is an absolute date — ignored for relative values like `24h` or `7d`. See [supported timezones](/docs/timezones). |
## Optional Functions
Enable these in the `params.functions` object:
| Function | Type | Default | Description |
| - | - | - | - |
| **get\_listing\_details** | boolean | false | Visit each listing's detail page to fetch full specifications, equipment, and seller information (4 credits per listing) |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Use `fetch_since: 24h` to monitor new listings published in the last day.
Enabling `get_listing_details` costs 4 additional credits per listing. Plan accordingly for large scrapes.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "AutoScout24 Listings Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_pages": 99,
"fetch_since": "7d",
"functions": {
"get_listing_details": false
}
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "AutoScout24 Listings Scraper (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_pages": 99,
"fetch_since": "7d",
"functions": {
"get_listing_details": False # Enable for full specs (4 credits per listing)
}
}
}
)
data = response.json()
print(f"Settings updated: {data['name']}")
```
## Response
```json 201 theme={null}
{
"name": "AutoScout24 Listings Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_pages": 99,
"fetch_since": "7d",
"functions": {
"get_listing_details": false
}
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/bienici-listings-search-export/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Bien'Ici Search Export squid
Add URLs or inputs to your **Bien'Ici Search Export** squid. Each task object must include the required fields below.
Crawler ID: `53317cbe332e408c5c46372a18e4fc76`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task supports the fields below.
## Task Fields
Default: `https://www.bienici.com/recherche/achat/bouches-du-rhone-13/maisonvilla`.
# Credit Cost
Source: https://docs.lobstr.io/examples/bienici-listings-search-export/credit-cost
Credit cost for the Bien'Ici Listings Search Export
1 credit per listing.
# Get Results
Source: https://docs.lobstr.io/examples/bienici-listings-search-export/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Bien'Ici Search Export
Retrieve scraped data from your **Bien'Ici Search Export** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Direct URL to the listing on Bienici. Example: `https://www.bienici.com/annonce/vente/antibes/appartement/3pieces/apimo-7410861`
Date the listing was last modified. Example: `2022-09-23T09:03:11.123Z`
City where the property is located. Example: `Antibes`
Postal code of the property. Example: `06600`
Unique identifier for the listing on Bienici. Example: `apimo-7410861`
Type of ad (sale or rental). Example: `buy`
Type of property (apartment, house, land, etc.). Example: `flat`
Title of the listing. Example: `3 PIÈCES PROCHE PLACE DE GAULLE`
Full description text of the listing. Example: `Idéalement situé au centre d'Antibes...`
Date the listing was first published. Example: `2022-09-21T13:54:51.302Z`
Seller's or agency's internal reference number. Example: `7410861`
Whether the property is newly built. Example: `false`
Year the property was constructed. Example: `1980`
Listed price of the property. Example: `267000`
Price excluding agency fees. Example: `260000`
Living surface area in square meters. Example: `53`
Total land surface area in square meters. Example: `250`
Total number of rooms. Example: `3`
Number of bedrooms. Example: `2`
Total number of floors in the building. Example: `4`
Floor number where the property is located. Example: `1`
Number of bathrooms. Example: `1`
Number of shower rooms. Example: `1`
Number of toilets. Example: `2`
Number of terraces. Example: `1`
Number of parking spaces. Example: `1`
Whether the property includes a cellar. Example: `true`
Whether the property has an alarm system. Example: `false`
Whether the property has a fireplace. Example: `false`
Whether the property includes a garage. Example: `true`
Whether the property includes parking. Example: `true`
Whether the building has an elevator. Example: `true`
Whether the building has an intercom. Example: `true`
Whether the building has a door code entry. Example: `true`
Whether the building has a video intercom. Example: `false`
Whether the property has air conditioning. Example: `true`
Whether the property includes a garden. Example: `true`
Whether the property includes a swimming pool. Example: `false`
Whether the property has a balcony. Example: `true`
Whether the property has a terrace. Example: `true`
Whether the property is accessible for disabled people. Example: `false`
Whether the property is described as calm or quiet. Example: `true`
Whether renovation work is needed. Example: `false`
Cardinal orientation of the property (e.g. South, East). Example: `Sud-Ouest`
Energy consumption value in kWh/m²/year. Example: `279`
Greenhouse gas emissions value in kg CO2/m²/year. Example: `9`
Energy efficiency class (A to G). Example: `E`
Greenhouse gas emissions class (A to G). Example: `B`
Date of the energy performance diagnostic. Example: `2022-09-21`
Maximum energy consumption estimate. Example: `2900`
Minimum energy consumption estimate. Example: `2100`
Whether the July 2021 DPE regulation applies. Example: `true`
Type of heating system (e.g. gas, electric, collective). Example: `radiateur électrique individuel`
Whether the agency has an exclusive sale mandate. Example: `false`
Who bears the agency fees (buyer or seller). Example: `purchaser`
URL to the agency's fee schedule. Example: `https://api.apimo.pro/document_agency/`
Agency fee as a percentage of the sale price. Example: `3.5`
Whether the ad was created by a professional agency. Example: `true`
Type of transaction (sale, rental, etc.). Example: `buy`
Price per square meter. Example: `5037.74`
Type of account that posted the listing (private or pro). Example: `agency`
Display name of the seller or agency. Example: `APIMO Agency`
Unique identifier of the seller or agency account. Example: `apimo-customer-123`
French department code of the property location. Example: `06`
District or neighborhood of the property. Example: `{'name': 'Antibes', 'code_insee': '06004'}`
Whether the exact address is known. Example: `false`
Information about location blurring applied to the listing. Example: `{'type': 'cityOrArrondissement'}`
Optical fiber availability status at the property. Example: `deploye`
Whether the property has electric vehicle charging stations. Example: `{'providers': []}`
List of photo URLs for the listing. Example: `[]`
Whether a 3D model is available for the listing. Example: `false`
Whether the 3D model is featured prominently. Example: `false`
Whether a 360° virtual tour is available. Example: `false`
Whether a virtual tour is requested. Example: `false`
IDs of related listings. Example: `[]`
Whether the listing is exclusive to Bienici. Example: `false`
End date of the exclusive promotion period. Example: `0`
Relevance score boost applied to the listing. Example: `5`
Whether the listing price has been reduced. Example: `false`
Whether a reduced VAT rate applies to the property. Example: `false`
Whether the property is part of a condominium. Example: `true`
Whether the condominium has ongoing legal proceedings. Example: `false`
Current status of the listing (active, sold, rented, etc.). Example: `{'onTheMarket': True}`
Threshold date used for DPE classification rules. Example: `2025-08-17T00:00:00.000Z`
Whether the district name is displayed on the listing. Example: `true`
Whether an insurance estimate is displayed. Example: `true`
Whether email contact is highlighted on the listing. Example: `false`
Whether there is no gated content behind the contact form. Example: `false`
Whether a PDF is available behind the contact form. Example: `false`
Number of times the phone number has been revealed. Example: `[]`
Character length of the listing description. Example: `92`
Whether the listing includes a geo-risks mention. Example: `false`
Postal code used for search filter matching. Example: `06600`
User-specific data relative to the listing (e.g. saved, contacted). Example: `{}`
Alias used for watermarking listing photos. Example: `apimo-watermark`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 29338,
"object": "result",
"squid": "55a371355446ebb3d3cb415f48919146",
"run": "e2d92e66d85eba25f6e9a6affa046b7d",
"url": "https://www.bienici.com/annonce/vente/antibes/appartement/3pieces/apimo-7410861",
"modification_date": "2022-09-23T09:03:11.123Z",
"city": "Antibes",
"postal_code": "06600",
"listing_id": "apimo-7410861",
"ad_type": "buy",
"property_type": "flat",
"title": "3 PIÈCES PROCHE PLACE DE GAULLE",
"description": "Idéalement situé au centre d'Antibes...",
"publication_date": "2022-09-21T13:54:51.302Z",
"reference": "7410861",
"new_property": false,
"year_of_construction": 1980,
"price": 267000,
"price_without_fees": 260000,
"surface_area": 53,
"land_surface_area": 250,
"rooms_quantity": 3,
"bedrooms_quantity": 2,
"floor_quantity": 4,
"floor": 1,
"bathrooms_quantity": 1,
"shower_rooms_quantity": 1,
"toilet_quantity": 2,
"terraces_quantity": 1,
"parking_places_quantity": 1,
"has_cellar": true,
"has_alarm": false,
"has_fireplace": false,
"has_garage": true,
"has_parking": true,
"has_elevator": true,
"has_intercom": true,
"has_door_code": true,
"has_videophone": false,
"has_air_conditioning": true,
"has_garden": true,
"has_pool": false,
"has_balcony": true,
"has_terrace": true,
"is_disabled_people_friendly": false,
"is_calm": true,
"work_to_do": false,
"exposition": "Sud-Ouest",
"energy_value": 279,
"greenhouse_gaz_value": 9,
"energy_classification": "E",
"greenhouse_gaz_classification": "B",
"energy_performance_diagnostic_date": "2022-09-21",
"max_energy_consumption": 2900,
"min_energy_consumption": 2100,
"use_july_2021_energy_performance_diagnostic": true,
"heating": "radiateur électrique individuel",
"is_exclusive_sale_mandate": false,
"fees_charged_to": "purchaser",
"agency_fee_url": "https://api.apimo.pro/document_agency/",
"agency_fee_percentage": 3.5,
"ad_created_by_pro": true,
"transaction_type": "buy",
"price_per_square_meter": 5037.74,
"account_type": "agency",
"account_display_name": "APIMO Agency",
"customer_id": "apimo-customer-123",
"department_code": "06",
"district": {
"name": "Antibes",
"code_insee": "06004"
},
"address_known": false,
"blur_info": {
"type": "cityOrArrondissement"
},
"optical_fiber_status": "deploye",
"charging_stations": {
"providers": []
},
"photos": [],
"with_3d_model": false,
"is_3d_highlighted": false,
"has_lot_with_360": false,
"need_virtual_tour": false,
"related_ads_ids": [],
"is_bien_ici_exclusive": false,
"end_of_promoted_as_exclusive": 0,
"relevance_bonus": 5,
"price_has_decreased": false,
"reduced_vat": false,
"is_in_condominium": true,
"is_condominium_in_procedure": false,
"status": {
"onTheMarket": true
},
"threshold_date": "2025-08-17T00:00:00.000Z",
"display_district_name": true,
"display_insurance_estimation": true,
"highlight_mail_contact": false,
"nothing_behind_form": false,
"pdf_behind_form": false,
"phone_displays": [],
"description_text_length": 92,
"has_georisques_mention": false,
"postal_code_for_search_filters": "06600",
"user_relative_data": {},
"photo_watermark_alias": "apimo-watermark",
"functions": null,
"native_id": 29338
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/bienici-listings-search-export/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Bien'Ici Listings Search Export scraper settings
Configure your Bien'Ici Listings Search Export squid settings. Control pagination, result limits, time filters, and whether to include sponsored listings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_pages** | integer | 100 | Maximum number of search result pages to scrape (max: 100) |
| **max\_results** | integer | 50 | Maximum number of listings to collect per task |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the run |
| **collect\_ads** | boolean | false | Include sponsored/promoted listings in results |
| **fetch\_since** | string | null | Stop scraping when items older than this threshold are reached (based on `published_at`). Use a relative duration (24h, 7d, 2w) or an absolute date (YYYY-MM-DD HH:MM:SS) |
| **fetch\_since\_timezone** | string | null | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Only applies when `fetch_since` is an absolute date — ignored for relative values like `24h` or `7d`. See [supported timezones](/docs/timezones). |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Use `fetch_since: 24h` to monitor new listings published in the last day.
Keep concurrency at 1 to avoid rate limiting on Bien'Ici.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Bien'\''ici Listings Search Export (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_pages": 100,
"max_results": 50,
"collect_ads": false,
"fetch_since": null
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Bien'ici Listings Search Export (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_pages": 100,
"max_results": 50,
"collect_ads": False,
"fetch_since": None
}
}
)
data = response.json()
print(f"Settings updated: {data['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Bien'ici Listings Search Export (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_pages": 100,
"max_results": 50,
"collect_ads": false,
"fetch_since": null
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/capterra-reviews-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Capterra Reviews Scraper squid
Add Capterra product URLs to your **Capterra Reviews Scraper** squid.
Crawler ID: `1b9cbf17d4315e37f52ddd8928b44484`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
The Capterra page of the product whose reviews you want, e.g. `https://www.capterra.com/p/150854/Apify/reviews/`. The product page itself (`https://www.capterra.com/p/150854/Apify/`) and the older `https://www.capterra.com/reviews/150854/Apify` form work too, with or without the trailing slash: the product is identified by the number in the URL, so an outdated product name in the URL is corrected automatically. Capterra's regional sites work too, with their own URL form, e.g. `https://www.capterra.co.uk/software/150854/apify` or `https://www.capterra.fr/reviews/150854/apify`: `co.uk`, `ca`, `com.au`, `co.nz`, `ie`, `in`, `ae`, `co.za`, `fr`, `es`, `it`, `nl`, `be`, `ch`, `at`, `pt`, `com.br`, `mx`, `se`, `dk`, `no`, `fi` and `pl`. A regional site is collected on that site, in the language it shows by default. Regional sites sort only by Most Recent or Most Helpful and have no Reviewer's Role or Frequency of Use filter. The order and the filters come from the settings below, not from the URL. A URL ending in `?page=N` starts the collection at page N of that order (25 reviews per page; on a regional site page 1 holds the 5 highlighted reviews). Example: `https://www.capterra.com/p/150854/Apify/reviews/`
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.capterra.com/p/150854/Apify/reviews/"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.capterra.com/p/150854/Apify/reviews/"}
],
},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.capterra.com/p/150854/Apify/reviews/"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/capterra-reviews-scraper/credit-cost
Credit cost for the Capterra Reviews Scraper
1 credit per review row.
# Get Results
Source: https://docs.lobstr.io/examples/capterra-reviews-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Capterra Reviews Scraper
Retrieve scraped data from your **Capterra Reviews Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`.
## Query Parameters
Hash of the squid to get results from.
Page number (default: 1).
## Result Fields
### Export Reviews
Numeric id of the review on the site it was written on (see `source_site`). Two reviews from different source sites can share this number, so use `global_review_id` to identify a review. Example: `7184664`
Unique id of the review across Capterra, GetApp and Software Advice: the source site followed by the review number. Together with `source_domain` it identifies a row. Example: `Capterra___7184664`
Headline the reviewer gave to the review. Example: `A practical platform for collecting public web data for research`
Date the review was written (day precision, UTC midnight). Capterra does not publish a time of day for reviews. Example: `2026-07-14T00:00:00+00:00`
Overall rating given by the reviewer, from 1 to 5. Example: `5.0`
Ease of use rating, from 1 to 5. Example: `5.0`
Customer service rating, from 1 to 5. Example: `5.0`
Features and functionality rating, from 1 to 5. Example: `5.0`
Value for money rating, from 1 to 5. Example: `5.0`
How likely the reviewer is to recommend the product, from 0 to 10. Example: `10.0`
What the reviewer likes about the product (Pros).
What the reviewer dislikes about the product (Cons).
Overall comments on the reviewer's experience with the product.
Why the reviewer switched to this product, when given.
Why the reviewer chose this product over the alternatives, when given. Example: `Ease of use and the large library of ready-made Actors`
Products the reviewer considered before choosing this one, each with its Capterra id, name, slug and link. Example: `[{"id": "234796", "name": "Selenium IDE", "slug": "Selenium-IDE", "url": "https://www.capterra.com/p/234796/Selenium-IDE/"}]`
Names of the products the reviewer considered, comma separated. Example: `Selenium IDE, Octoparse`
Products the reviewer used before switching to this one, each with its Capterra id, name, slug and link.
Names of the products the reviewer switched from, comma separated. Example: `Selenium IDE`
Incentive disclosure code published by Capterra: `NoIncentive`, `VendorReferredIncentivized` or `NominalGift`. Example: `NoIncentive`
`true` when the reviewer was offered an incentive (a gift card or a vendor-referred incentive) to write the review. Example: `false`
Capterra's own explanation of how the review was collected and whether an incentive was offered. Example: `No Incentive Offered: This review was submitted organically.`
Site of the Gartner network the review was written on: `Capterra`, `GetApp` or `SoftwareAdvice`. Example: `Capterra`
`true` when the reviewer chose to stay anonymous (shown as "Verified Reviewer"). On regional Capterra sites in a language other than English, French, Spanish, Brazilian Portuguese or Dutch, it is empty for the first 5 reviews of a product when Capterra does not say. Example: `false`
Public reply of the vendor to the review, when there is one.
Date of the vendor's reply (day precision, UTC midnight). Example: `2024-05-28T00:00:00+00:00`
Name of the reviewer as displayed by Capterra (first name and initial, or "Verified Reviewer" when anonymous); regional sites show the first name only. Example: `Faustino G.`
Job title of the reviewer. On regional Capterra sites in a language other than English, French, Spanish, Portuguese or Dutch, the line is kept as Capterra shows it (job title followed by the reviewer's country). Example: `Researcher`
Industry of the reviewer's company. Example: `Education Management`
Size of the reviewer's company. Example: `11-50 employees`
How long the reviewer has used the product. Example: `6-12 months`
Link to the reviewer's profile picture, when there is one.
`true` when the reviewer's identity was verified through LinkedIn. Example: `true`
`true` when Capterra validated the reviewer. Example: `true`
Validation checks the reviewer passed, comma separated (`LinkedIn`, `BusinessEmail`, `ProofOfLink`). Example: `LinkedIn, ProofOfLink`
Capterra id of the reviewed product, the number after `/p/` in its URL. Example: `150854`
Internal unique identifier of the product in the Gartner network. Example: `9332c814-d90b-4746-bb51-a6d200b2b406`
Name of the reviewed product. Example: `Apify`
Slug of the product in its Capterra URL (it can differ from the product name). Example: `Apify`
Name of the company that makes the product. Example: `Apify`
Average overall rating of the product on Capterra, from 1 to 5. Example: `4.8`
Total number of reviews of the product on Capterra. Example: `579`
Main Capterra software category of the product. Example: `Web Scraping`
Capterra reviews page of the product the review was collected from (the regional site's own product page for a regional URL). Example: `https://www.capterra.com/p/150854/Apify/reviews/`
Capterra site the review was collected from: `capterra.com` or a regional site such as `capterra.co.uk` or `capterra.fr`. The same review can be collected from several sites (a regional site can show it in its original language), so a review is identified by `global_review_id` together with `source_domain`. Example: `capterra.com`
## Code Examples
```bash cURL theme={null}
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=YOUR_SQUID_HASH" \
-d "page=1"
```
```python Python theme={null}
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "YOUR_SQUID_HASH", "page": 1},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"review_id": "7184664", "global_review_id": "Capterra___7184664", "title": "A practical platform for collecting public web data for research", "written_on": "2026-07-14T00:00:00+00:00", "overall_rating": 5.0, "ease_of_use_rating": 5.0, "customer_support_rating": 5.0, "functionality_rating": 5.0, "value_for_money_rating": 5.0, "likelihood_to_recommend": 10.0, "pros_text": "I mainly use Apify for academic research on socio-environmental issues and digital public debates...", "cons_text": "Some Actors have excellent documentation, while others require more experimentation...", "general_comments": "My overall experience has been very positive. I use Apify as part of my research workflow...", "incentivized": "NoIncentive", "is_incentivized": false, "source_site": "Capterra", "is_anonymous": false, "reviewer_name": "Faustino G.", "reviewer_job_title": "Researcher", "reviewer_industry": "Education Management", "reviewer_company_size": "11-50 employees", "reviewer_time_used_product": "6-12 months", "reviewer_linkedin_verified": true, "reviewer_is_validated": true, "reviewer_validations": "LinkedIn, ProofOfLink", "product_id": "150854", "product_name": "Apify", "product_slug": "Apify", "vendor_name": "Apify", "product_overall_rating": 4.8, "product_total_reviews": 579, "product_category": "Web Scraping", "source_url": "https://www.capterra.com/p/150854/Apify/reviews/", "source_domain": "capterra.com"}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/capterra-reviews-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Capterra Reviews Scraper settings
Configure your **Capterra Reviews Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| sort | string | `Most Recent` | Order in which the reviews are collected. `Most Recent` returns the newest reviews first, so `max_results` keeps the latest ones. `Most Helpful` is Capterra's own default order. Ignored when `fetch_since` is set, because that setting always collects newest first. Regional Capterra sites (e.g. `capterra.co.uk`) only offer `Most Recent` and `Most Helpful`: a task on a regional site with `Highest Rating` or `Lowest Rating` stops with an error — use the `rating` filter instead (e.g. `1-2 stars`). One of: `Most Recent`, `Most Helpful`, `Highest Rating`, `Lowest Rating`. |
| rating | string | `Any` | Only collect reviews with this overall rating. Applied by Capterra itself, so filtered-out reviews cost nothing. Use `1-2 stars` or `1-3 stars` to focus on the product's weaknesses. On regional sites Capterra filters one exact star value only, so `1 star`, `4-5 stars`, `1-2 stars` and `1-3 stars` are checked by us on each review: more pages are read, but a filtered-out review is never billed. One of: `Any`, `5 stars`, `4 stars`, `3 stars`, `2 stars`, `1 star`, `4-5 stars`, `1-2 stars`, `1-3 stars`. |
| company\_size | string | `Any` | Only collect reviews written by people working in a company of this size. Applied by Capterra itself. One of: `Any`, `Self-employed`, `1-10 employees`, `11-50 employees`, `51-200 employees`, `201-500 employees`, `501-1,000 employees`, `1,001-5,000 employees`, `5,001-10,000 employees`, `10,001+ employees`. |
| reviewer\_role | string | `Any` | Only collect reviews from reviewers with this role towards the product, as declared to Capterra. `Other` covers team members and people who helped with the purchase. A reviewer can declare several roles. Applied by Capterra itself. Not available on Capterra's regional sites: a task on a regional site with this filter set stops with an error. One of: `Any`, `User`, `Administrator`, `Other`. |
| time\_used\_product | string | `Any` | Only collect reviews from reviewers who used the product for this long. Applied by Capterra itself. One of: `Any`, `Free Trial`, `Less than 6 months`, `6-12 months`, `1-2 years`, `2+ years`. |
| frequency\_of\_use | string | `Any` | Only collect reviews from reviewers who use the product this often. Applied by Capterra itself. Not available on Capterra's regional sites: a task on a regional site with this filter set stops with an error. One of: `Any`, `Daily`, `Weekly`, `Monthly`, `Other`. |
| fetch\_since | fetch\_since | — | Only collect reviews written on or after this threshold (based on `written_on`). Use a relative duration (`24h`, `7d`, `2w`) or an absolute date (`YYYY-MM-DD HH:MM:SS`). Capterra dates reviews to the day, so every review written on the threshold day is kept. When this is set the reviews are always collected newest first, whatever `sort` says, and the collection stops at the first older review. |
| fetch\_since\_timezone | string | — | Timezone used to read an absolute `fetch_since` date, e.g. `America/New_York`. Ignored for relative values. |
| max\_results | integer | — | Maximum number of reviews collected per product URL. Leave empty to collect every review Capterra shows for the product. |
| max\_unique\_results\_per\_run | integer | — | Maximum number of unique reviews retrieved across all tasks in the entire run. Leave empty for unlimited. |
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sort": "Lowest Rating",
"rating": "1-2 stars",
"company_size": "11-50 employees",
"max_results": 100
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"sort": "Lowest Rating",
"rating": "1-2 stars",
"company_size": "11-50 employees",
"max_results": 100,
},
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"sort": "Lowest Rating", "rating": "1-2 stars", "company_size": "11-50 employees", "max_results": 100}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/contact-details/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Contact Details Scraper squid
Add URLs or inputs to your **Contact Details Scraper** squid.
Crawler ID: `7d83eacc7b94f14d5ffda28c6d357961`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
Website to crawl. A bare domain or full URL. Example: `https://lobstr.io`
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "7d83eacc7b94f14d5ffda28c6d357961",
"tasks": [
{"url": "https://lobstr.io"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "7d83eacc7b94f14d5ffda28c6d357961",
"tasks": [
{"url": "https://lobstr.io"}
]
}
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://lobstr.io"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/contact-details/credit-cost
Credit cost for the Contact Details Scraper
1 credit per result row.
# Get Results
Source: https://docs.lobstr.io/examples/contact-details/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Contact Details Scraper
Retrieve scraped data from your **Contact Details Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Page number (default: 1)
## Result Fields
Normalised website identity, lowercased. Example: `lobstr.io`
Registrable domain of the crawled website. Example: `lobstr.io`
Company or site name, from og:site\_name or JSON-LD. Example: `Lobstr`
Email addresses published on the crawled pages. Example: `["hello@lobstr.io"]`
High confidence phone numbers, from tel: links
Phone-shaped values that failed validation
Company LinkedIn pages found. Example: `["https://www.linkedin.com/company/lobstr-io"]`
Personal LinkedIn profiles found
Twitter / X profile URLs
Instagram profile URLs
Facebook page URLs
YouTube channel URLs
TikTok profile URLs
Pinterest profile URLs
Discord invite URLs
Snapchat profile URLs
Threads profile URLs
Telegram profile or channel URLs
Reddit profile or subreddit URLs
WhatsApp click-to-chat URLs
Maps every contact value to the URL of the first page it was found on
Pages actually fetched, in fetch order
Number of pages fetched. Example: `4`
Crawl outcome: `ok`, `no_contacts`, or `unreachable`. Example: `ok`
Reason behind the status (empty when the crawl succeeded)
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"domain": "lobstr.io", "company_name": "Lobstr", "emails": ["hello@lobstr.io"], "linkedin_urls": ["https://www.linkedin.com/company/lobstr-io"], "pages_crawled": 4, "status": "ok"}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/contact-details/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Contact Details Scraper settings
Configure your **Contact Details Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| rows | integer | — | Number of rows returned per API page |
| max\_pages\_per\_site | integer | 10 | Max pages fetched per website, homepage included |
| follow\_contact\_pages | boolean | true | Follow contact, about, imprint and legal notice pages from the homepage |
| same\_domain\_only | boolean | true | Only crawl pages on the same domain |
| max\_results | integer | — | Max rows collected per task |
| max\_unique\_results\_per\_run | integer | — | Max unique results across all tasks in the run |
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/7d83eacc7b94f14d5ffda28c6d357961 \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"max_pages_per_site": 20,
"follow_contact_pages": true,
"same_domain_only": true
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/7d83eacc7b94f14d5ffda28c6d357961",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"max_pages_per_site": 20,
"follow_contact_pages": True,
"same_domain_only": True
}
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"max_pages_per_site": 20, "follow_contact_pages": true, "same_domain_only": true}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/crunchbase-companies-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Crunchbase Companies Scraper squid
Add company URLs or company search URLs to your **Crunchbase Companies Scraper** squid.
Crawler ID: `f8209af58c212db5d8468d068e09ce02`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
A Crunchbase company URL (`https://www.crunchbase.com/organization/github`) for one company, or a company search URL (`https://www.crunchbase.com/discover/organization.companies`) to collect a list. Logged out, Crunchbase serves at most 15 companies per search, so use the search filters in the Settings tab to aim each search, or feed one company URL per task to collect companies in volume. Filters written inside a pasted search URL are not applied — Crunchbase does not serve them to a logged-out session, so set the search filters below (`industry`, `location`, `employee_count`, `founded_year_min`/`_max`, `funding_stage`, `operating_status`, `company_type`, `ipo_status`) instead.
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.crunchbase.com/organization/github"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.crunchbase.com/organization/github"}
],
},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.crunchbase.com/organization/github"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/crunchbase-companies-scraper/credit-cost
Credit cost for the Crunchbase Companies Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Companies | 1 | 1 credit per company. |
| Full Company Details | 1 | 1 extra credit per company when `company_details` is enabled on a search. Company URLs return the full details for free on the first request. |
Logged out, Crunchbase serves at most 15 companies per search page and refuses to paginate. Use the search filters to slice a market into as many 15-company windows as you need, or feed company URLs (no such limit).
# Get Results
Source: https://docs.lobstr.io/examples/crunchbase-companies-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Crunchbase Companies Scraper
Retrieve scraped data from your **Crunchbase Companies Scraper** runs. One row per company. Company-URL tasks return every field for free on the first request; search tasks return the core fields for free and the "Full Company Details" fields only when `company_details` is enabled.
Crunchbase gates funding dates and amounts behind its paid plan, so `last_funding_amount`, `last_funding_currency` and `last_funding_date` are only filled for the minority of companies (about 3 of 20 sampled) where Crunchbase still publishes the amount on the public activity timeline.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`.
## Query Parameters
Hash of the squid to get results from.
Page number (default: 1).
## Result Fields
### Export Companies
Company name as published on Crunchbase. Example: `GitHub Inc`
Crunchbase permalink (the slug in the company URL). Example: `github`
Crunchbase internal company identifier, stable across renames.
Crunchbase profile URL, built from the permalink.
Company logo hosted by Crunchbase.
One-line company description.
Crunchbase industries (categories) of the company.
Crunchbase industry groups the company belongs to.
Headquarters city.
Headquarters region or state.
Headquarters country.
Headquarters continent.
Crunchbase Rank of the company (lower is better).
Employee count range published by Crunchbase (e.g. `1001-5000`).
Type of the most recent funding round.
Whether the company is `private`, `public` or `delisted`.
### Full Company Details
Full company description.
Company website.
Registered legal name.
`for_profit` or `non_profit`.
Whether the company is still `active` or `closed`.
Wider regions Crunchbase attaches to the headquarters.
Public contact email published on the profile.
Public contact phone published on the profile.
LinkedIn page of the company.
X (Twitter) profile of the company.
Facebook page of the company.
Founders with their Crunchbase person profile.
Number of funding rounds Crunchbase lists.
Number of investors in the company.
Number of lead investors in the company.
Number of investments the company itself made.
Number of investments the company led.
Investors of the company, with the round they joined and whether they led it. Crunchbase keeps the amounts behind its paid plan.
Funding rounds of the company. `announced_on`, `money_raised` and `currency` are only added to the few rounds Crunchbase still publishes on the public activity timeline.
Amount raised by the company in the most recent round Crunchbase publishes an amount for. Only rounds the company itself raised are counted, never rounds it invested in. Empty for most companies (Pro-gated everywhere else). When filled, `last_funding_date` gives the date of that same round, which can be older than the round named by `last_funding_type`.
Currency of `last_funding_amount`. Same minority coverage as the amount.
Date of the funding round `last_funding_amount` refers to. Same minority coverage as the amount.
Number of companies this company acquired.
Companies acquired by this company.
Company that acquired this company, when it was acquired.
Type of the acquisition of this company.
Terms of the acquisition of this company (`cash`, `stock`, `cash_and_stock`).
Parent company that owns this company.
Number of sub-organizations owned by this company.
Sub-organizations owned by this company.
Companies Crunchbase considers similar.
Highlighted current employees with their job title.
Board members and advisors listed on the profile.
Number of contacts Crunchbase holds for this company.
Number of contact emails Crunchbase holds for this company.
Number of contact phone numbers Crunchbase holds for this company.
Number of people currently employed according to Crunchbase profiles.
Number of current advisor and board positions.
Products and services of the company.
Product launches reported in the press.
Partnership announcements reported in the press.
Awards reported in the press.
Layoffs reported in the press.
Legal proceedings reported in the press.
Key employee arrivals and departures reported in the press.
Recent press articles Crunchbase lists on the activity timeline of the company: date, title, publisher, author, article URL and thumbnail. At most 10 most-recent items.
Number of press articles returned in `news_articles` (at most 10).
Office openings reported in the press.
Crunchbase Growth Score of the company.
Change of the Growth Score over the last 90 days.
Crunchbase Heat Score of the company.
Change of the Heat Score over the last 90 days.
Number of web technologies BuiltWith detects on the company website.
Web technologies BuiltWith detects, as shown on the profile.
Monthly website visits measured by Semrush.
Month-over-month change of the Semrush visits, as a ratio.
Date the Semrush figures were last refreshed.
Number of mobile apps Apptopia attributes to the company.
Total mobile app downloads measured by Apptopia.
Month-over-month change of the Apptopia downloads, as a ratio.
Number of products the company uses according to Siftery.
Products the company uses according to Siftery.
Date the Bombora intent data was last refreshed.
Topics the company is currently researching, from Bombora intent data.
Estimated IT spend of the company in USD, from Aberdeen.
Number of granted patents, from IPqwery.
Number of registered trademarks, from IPqwery.
Most frequent trademark class, from IPqwery.
Stock exchange and ticker, for public companies.
Crunchbase hub tags such as `unicorn` or `exited_unicorn`.
Crunchbase hubs the company is featured in.
Rank of the company inside each of its industries.
Number of investments in diversity-spotlight companies.
Investments made in companies with a diversity spotlight.
Number of funds raised by the company, for investors.
Funds raised by the company, for investors. Fund amounts are Pro-gated.
Investments the company made in other companies.
Portfolio companies that exited.
## Code Examples
```bash cURL theme={null}
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=YOUR_SQUID_HASH" \
-d "page=1"
```
```python Python theme={null}
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "YOUR_SQUID_HASH", "page": 1},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"company_name": "GitHub Inc", "permalink": "github", "crunchbase_url": "https://www.crunchbase.com/organization/github", "short_description": "GitHub is a software company that offers code hosting services.", "industries": ["Artificial Intelligence (AI)", "Developer Tools"], "headquarters_city": "San Francisco", "headquarters_country": "United States", "num_employees_range": "1001-5000", "last_funding_type": "series_b", "ipo_status": "private", "cb_rank": 38516}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/crunchbase-companies-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Crunchbase Companies Scraper settings
Configure your **Crunchbase Companies Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| max\_results | integer | — | Maximum number of companies collected per task. Leave empty to collect everything the task serves. A company URL always yields one company; a search serves at most 15 companies because Crunchbase gates pagination behind its paid plan. |
| industry | string | — | Only keep companies in these industries, e.g. `Financial Services` or `Artificial Intelligence`. Separate several with commas. Applies to search pages only. |
| location | string | — | Only keep companies based in these places, e.g. `San Francisco`, `France` or `United States`. Separate several with commas. Applies to search pages only. |
| founded\_year\_min | integer | — | Only collect companies founded in this year or later. Crunchbase keeps the founding date itself behind its paid plan, so it filters the search but never appears in the exported row. Search URLs only. |
| founded\_year\_max | integer | — | Only collect companies founded in this year or earlier. Same paywall caveat as `founded_year_min`. Search URLs only. |
| funding\_stage | string | — | Only keep companies whose latest funding round is one of these stages. Comma separated for several (e.g. `seed,series_a`). One of: `pre_seed`, `seed`, `series_a`, `series_b`, `series_c`, `series_d`, `series_e`, `series_f`, `series_g`, `series_h`, `series_i`, `series_j`, `series_unknown`, `private_equity`, `debt_financing`, `post_ipo_equity`, `secondary_market`, `non_equity_assistance`, `undisclosed`. Search pages only. |
| employee\_count | string | — | Only keep companies in one of these employee count ranges. Comma separated for several (e.g. `11-50,51-100`). One of: `1-10`, `11-50`, `51-100`, `101-250`, `251-500`, `501-1000`, `1001-5000`, `5001-10000`, `10001+`. Search pages only. |
| operating\_status | string | — | Only collect companies that are still `active`, or only the ones Crunchbase marks as `closed`. Search URLs only. |
| company\_type | string | — | Only collect `for_profit` companies or only `non_profit` organizations. Search URLs only. |
| ipo\_status | string | — | Only collect `public` or `private` companies. Search URLs only. |
| company\_details | boolean | false | Open every company found by a search to add its website, contacts, founders, investors, funding rounds, acquisitions, products and technology profile. Company URLs already include all of this at no extra cost. Costs 1 extra credit per company on a search. |
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"industry": "Financial Services",
"location": "San Francisco",
"employee_count": "11-50",
"funding_stage": "series_a",
"company_details": true
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"industry": "Financial Services",
"location": "San Francisco",
"employee_count": "11-50",
"funding_stage": "series_a",
"company_details": True,
},
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"industry": "Financial Services", "location": "San Francisco", "employee_count": "11-50", "funding_stage": "series_a", "company_details": true}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/facebook-ad-library-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Facebook Ad Library Scraper squid
Add URLs or inputs to your **Facebook Ad Library Scraper** squid.
Crawler ID: `f667dfc7398156ba2359836105184825`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
Meta Ad Library URL (keyword search, advertiser page, or single ad). Example: `https://www.facebook.com/ads/library/?q=apple&search_type=keyword_unordered`
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "f667dfc7398156ba2359836105184825",
"tasks": [
{"url": "https://www.facebook.com/ads/library/?q=apple&search_type=keyword_unordered"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "f667dfc7398156ba2359836105184825",
"tasks": [
{"url": "https://www.facebook.com/ads/library/?q=apple&search_type=keyword_unordered"}
]
}
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.facebook.com/ads/library/?q=apple&search_type=keyword_unordered"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/facebook-ad-library-scraper/credit-cost
Credit cost for the Facebook Ad Library Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Ads | 1 | 1 credit per ad. |
| Ad Details | 1 | 1 extra credit per ad when the add-on is enabled. Off by default. |
# Get Results
Source: https://docs.lobstr.io/examples/facebook-ad-library-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Facebook Ad Library Scraper
Retrieve scraped data from your **Facebook Ad Library Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Page number (default: 1)
## Result Fields
Unique Meta Ad Library identifier. Example: `1234567890123456`
Direct Ad Library URL of this ad
Meta's internal ad id
Numeric identifier of the Facebook Page
Name of the Facebook Page running the ad. Example: `Apple`
URL of the Facebook Page
Number of likes of the Page
Categories of the Page
Profile picture of the Page
Whether the Page has been deleted
Legal name of the confirmed page owner
Meta identifier of the confirmed owner
Main body text of the ad creative. Example: `Introducing iPhone 17. The most advanced iPhone yet.`
Headline of the ad creative
Link description shown under the headline
Display link (domain shown on the creative)
Label of the call-to-action button
Type of the call-to-action button
Destination URL of the ad
Creative format: `IMAGE`, `VIDEO`, `MEME`, `DCO`, `DPA`, `CAROUSEL`
Paid-for-by byline (political/issue ads)
Images of the creative
Videos of the creative
Cards of a multi-card creative
Whether the ad reshares an existing post
Date and time the ad started running. Example: `2026-09-01T00:00:00Z`
Date and time the ad stopped running
Total time active, in seconds
Whether the ad is currently running. Example: `true`
Meta platforms the ad runs on
Currency of the spend range
Spend range as a range string (political ads only)
Impressions range (political ads only)
Meta's internal impressions index. Example: `4`
Ad Library categories
Number of ads Meta collated with this one
Whether the ad is eligible or was taken down
Whether Meta flags the creative as sensitive
Whether the creative contains AI-generated or altered media
Total ads Meta reports for this advertiser
Keyword the ad was found with
### Detail Fields
The following fields require `ad_details: true` in settings.
Declared payer of the ad
Declared beneficiary of the ad
Whether the ad targets the EU
Total EU accounts reached
Locations targeted in the EU
Gender targeted in the EU
Lower bound of age range targeted in EU
Upper bound of age range targeted in EU
EU reach broken down by country, age and gender
Whether Meta has taken the ad down
About text of the advertiser's Page
Vanity alias of the advertiser's Page
Category of the advertiser's Page
Verification status of the advertiser's Page
Number of followers of the advertiser's Instagram account
Username of the advertiser's Instagram account
Share of impressions by age and gender (political ads)
Share of impressions by region (political ads)
Lifetime ad spend of the advertiser
Policy violations Meta records on the ad
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"ad_archive_id": "1234567890123456", "page_name": "Apple", "ad_text": "Introducing iPhone 17. The most advanced iPhone yet.", "is_active": true, "start_date": "2026-09-01T00:00:00Z", "impressions_index": 4}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/facebook-ad-library-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Facebook Ad Library Scraper settings
Configure your **Facebook Ad Library Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| rows | integer | — | Number of rows returned per API page |
| country | string | ALL | Country ads are served in, as a 2-letter ISO code |
| ad\_status | string | all | `all`, `active`, or `inactive` |
| ad\_type | string | all | `all` or `political_and_issue_ads` |
| media\_type | string | all | `image`, `video`, `meme`, `image_and_meme`, `none`, or `all` |
| platforms | string | — | Comma-separated Meta platforms: `facebook`, `instagram`, `audience_network`, `messenger` |
| languages | string | — | Comma-separated creative languages as ISO 639-1 codes |
| date\_from | string | — | Only collect ads running on or after this date (YYYY-MM-DD) |
| date\_to | string | — | Only collect ads running on or before this date (YYYY-MM-DD) |
| sort\_by | string | total\_impressions | `total_impressions` or `recent` |
| ad\_details | boolean | false | Open each ad's transparency detail to add payer, beneficiary, EU targeting data |
| max\_results | integer | — | Max ads collected per URL |
| max\_unique\_results\_per\_run | integer | — | Max unique ads across all tasks in the run |
Setting `ad_details: true` enables additional detail fields in results.
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/f667dfc7398156ba2359836105184825 \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"country": "US",
"ad_status": "active",
"sort_by": "recent",
"max_results": 200,
"ad_details": true
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/f667dfc7398156ba2359836105184825",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"country": "US",
"ad_status": "active",
"sort_by": "recent",
"max_results": 200,
"ad_details": True
}
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"country": "US", "ad_status": "active", "ad_type": "all", "sort_by": "recent", "max_results": 200, "ad_details": true}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/facebook-business-page-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Facebook Business Page Scraper squid
Add URLs or inputs to your **Facebook Business Page Scraper** squid. Each task object must include the required fields below.
Crawler ID: `c80e36ed76bfae3c332e8983971403d7`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task supports the fields below.
## Task Fields
# Credit Cost
Source: https://docs.lobstr.io/examples/facebook-business-page-scraper/credit-cost
Credit cost for the Facebook Business Page Scraper
1 credit per page.
# Get Results
Source: https://docs.lobstr.io/examples/facebook-business-page-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Facebook Business Page Scraper
Retrieve scraped data from your **Facebook Business Page Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Direct URL to the Facebook page. Example: `https://www.facebook.com/nocommentpau`
Internal platform identifier for the Facebook page. Example: `100063521350725`
Name of the Facebook page. Example: `No Comment Pau`
URL slug of the Facebook page (e.g. used in facebook.com/slug). Example: `nocommentpau`
URL of the Facebook page's profile picture. Example: `https://scontent-arn2-1.xx.fbcdn.net/v/t39.30808-1/305969088_514545647339476_1479009747142197002_n.jpg?stp=dst-jpg_s200x200_tt6&_nc_cat=106&ccb=1-7&_nc_sid=2d3e12&_nc_ohc=wbDXCjTyDL0Q7kNvwH5JYnv&_nc_oc=AdmzXtKRvkHLqrkixm0NSUYOzt6H8GocBfUDf8qkJur4vYPsYgQT9sRxnp8PkFRhA9o&_nc_zt=24&_nc_ht=scontent-arn2-1.xx&_nc_gid=pIklvIxjpHdjpcgKR-p9eQ&_nc_ss=8&oh=00_Afyb_NxP5U7IKQFtCCoCRfKRKqqnKN6Ip2bObUiy_NQffw&oe=69C0A25B`
Total number of likes on the Facebook page. Example: `0`
Total number of followers of the Facebook page. Example: `15`
Number of check-ins or visits reported on the Facebook page. Example: `0`
Website URL listed on the Facebook page. Example: `nocommentpau.fr`
Price range listed on the Facebook page. Example: `$$`
Category of the Facebook page (e.g. Restaurant, Brand, Public Figure). Example: `Restaurant`
Link to the menu listed on the Facebook page
Instagram profile URL linked to the Facebook page
Email address listed on the Facebook page. Example: `bonjour@nocommentpau.fr`
Full address listed on the Facebook page. Example: `5 rue Alfred de Lassence, Pau, France`
About text from the Facebook page's About section. Example: `NO COMMENT un véritable lieu d’épicuriens 🤩`
Customer reviews and rating summary on the Facebook page. Example: `0`
Average rating of the Facebook page
Current operational status of the Facebook page. Example: `valid_page`
Phone number listed on the Facebook page. Example: `+33 5 59 83 76 80`
## Response
```json 200 theme={null}
{
"total_results": 2,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 2,
"data": [
{
"id": 91234,
"object": "result",
"squid": "79adf8711330a32e9a07e1748c362f5d",
"run": "0ff156b7279b996ab65ab2d24a129a5c",
"url": "https://www.facebook.com/McDonalds/",
"internal_id": 100064458773195,
"name": "McDonald's",
"slug": "McDonalds",
"image_url": "https://scontent-fra5-1.xx.fbcdn.net/v/t39.30808-1/503818730_1129343465890935_5294978503944330026_n.jpg?stp=dst-jpg_s200x200_tt6&_nc_cat=1&ccb=1-7&_nc_sid=2d3e12&_nc_ohc=ecpcWRi2YEoQ7kNvwEBNzJ0&_nc_oc=AdkGqDrrynKpdQIn969cKd5F2MAIBw_-PZVJyq7E5egIZ1pVNYP5jXeEgbCF9zaP-g8&_nc_zt=24&_nc_ht=scontent-fra5-1.xx&_nc_gid=rTZ4MlBvhVIAMDTPlOtqGA&oh=00_AfQa8VoR1_d10X_-UukzACALRyTtCCrJfVhBindx4b3I8g&oe=6882E23E",
"likes": "82M",
"followers": "82M",
"visits": 0,
"wesbite": "beta.joinkalo.com/events/f381aa59-b183-4719-9c36-b20f0d1ffa47/join",
"price": "$",
"category": "Burger Restaurant",
"menu": null,
"instagram": null,
"email": null,
"address": null,
"about": "i’m retiring you won. Snack Wrap is back.",
"reviews": 0,
"score": 2,
"status": "valid_page",
"phone": "+1 806-445-0333",
"functions": null,
"native_id": 91234
},
{
"id": 91235,
"object": "result",
"squid": "79adf8711330a32e9a07e1748c362f5d",
"run": "0ff156b7279b996ab65ab2d24a129a5c",
"url": "https://www.facebook.com/SpaceX/",
"internal_id": "SpaceX",
"name": null,
"slug": null,
"image_url": null,
"likes": null,
"followers": null,
"visits": null,
"wesbite": null,
"price": null,
"category": null,
"menu": null,
"instagram": null,
"email": null,
"address": null,
"about": null,
"reviews": null,
"score": null,
"status": "login_required",
"phone": null,
"functions": null,
"native_id": 91235
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/facebook-business-page-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Facebook Business Page Scraper settings
Configure your Facebook Business Page Scraper squid settings. This scraper has no scraper-specific parameters — only general squid settings are available.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Facebook Business Page Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Facebook Business Page Scraper (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {}
}
)
print(f"Settings updated: {response.json()['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Facebook Business Page Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/facebook-comments-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Facebook Comments Scraper squid
Add URLs or inputs to your **Facebook Comments Scraper** squid.
Crawler ID: `3cf27be3402dbc529ed0db7d18135e8c`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
Full URL of the Facebook post, photo, video or reel to collect comments from. Example: `https://www.facebook.com/meta/posts/123456789`
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "3cf27be3402dbc529ed0db7d18135e8c",
"tasks": [
{"url": "https://www.facebook.com/meta/posts/123456789"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "3cf27be3402dbc529ed0db7d18135e8c",
"tasks": [
{"url": "https://www.facebook.com/meta/posts/123456789"}
]
}
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.facebook.com/meta/posts/123456789"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/facebook-comments-scraper/credit-cost
Credit cost for the Facebook Comments Scraper
1 credit per comment.
# Get Results
Source: https://docs.lobstr.io/examples/facebook-comments-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Facebook Comments Scraper
Retrieve scraped data from your **Facebook Comments Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Page number (default: 1)
## Result Fields
Unique Facebook identifier of the comment. Example: `123456789_987654321`
Direct URL to the comment
Facebook identifier of the post
Canonical URL of the post
Full text content of the comment. Example: `Great post! Thanks for sharing.`
Date and time the comment was posted, in UTC. Example: `2026-09-14T16:45:00Z`
Language Facebook detected for the comment
Display name of the comment author. Example: `Jane Smith`
Facebook identifier of the comment author
URL of the comment author's Facebook profile
URL of the comment author's profile picture
Whether the comment was written by the Page owner
Whether the comment author has a verified badge
Total number of reactions on the comment (all types). Example: `12`
Number of Like reactions
Number of Love reactions
Number of Haha reactions
Number of Wow reactions
Number of Sad reactions
Number of Angry reactions
Number of Care reactions
Number of replies to this comment
Whether this row is a reply to another comment. Example: `false`
Nesting depth — 0 for top-level, 1 for a reply. Example: `0`
Identifier of the comment this reply answers
Display name of the parent comment author
Type of media attached (photo, animated\_image, etc.)
URL of the media attached to the comment
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"comment_id": "123456789_987654321", "text": "Great post! Thanks for sharing.", "author_name": "Jane Smith", "created_at": "2026-09-14T16:45:00Z", "likes_count": 12, "is_reply": false, "depth": 0}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/facebook-comments-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Facebook Comments Scraper settings
Configure your **Facebook Comments Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| rows | integer | — | Number of rows returned per API page |
| max\_unique\_results\_per\_run | integer | — | Max unique comments across all tasks in the run |
| max\_results | integer | — | Total comments per post (top-level + replies combined) |
| sort\_by | string | all\_comments | Comment order: `most_relevant` or `all_comments` |
| include\_replies | boolean | false | Also collect replies of every top-level comment |
| max\_replies | integer | — | Max replies collected per top-level comment |
| fetch\_since | string | — | Stop scraping when comments older than this threshold are reached |
| fetch\_since\_timezone | string | — | Timezone for fetch\_since |
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/3cf27be3402dbc529ed0db7d18135e8c \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"max_results": 500,
"sort_by": "all_comments",
"include_replies": true,
"max_replies": 50
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/3cf27be3402dbc529ed0db7d18135e8c",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"max_results": 500,
"sort_by": "all_comments",
"include_replies": True,
"max_replies": 50
}
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"max_results": 500, "sort_by": "all_comments", "include_replies": true, "max_replies": 50}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/facebook-group-posts-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Facebook Public Group Posts Scraper squid
Add URLs or inputs to your **Facebook Public Group Posts Scraper** squid. Each task object must include the required fields below.
Crawler ID: `9b0bb2e04c6f7c475a9da9bb20530dac`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task supports the fields below.
## Task Fields
# Credit Cost
Source: https://docs.lobstr.io/examples/facebook-group-posts-scraper/credit-cost
Credit cost for the Facebook Public Group Posts Scraper
1 credit per post.
# Get Results
Source: https://docs.lobstr.io/examples/facebook-group-posts-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Facebook Public Group Posts Scraper
Retrieve scraped data from your **Facebook Public Group Posts Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Direct URL to the post in the Facebook group. Example: `https://www.facebook.com/groups/211270969394435/permalink/2311529512701893/`
Facebook profile URL of the post author. Example: `https://www.facebook.com/groups/211270969394435`
Unique identifier for the Facebook post. Example: `2311529512701893`
Unique identifier for the Facebook group. Example: `211270969394435`
Name of the Facebook group where the post was published. Example: `U.S. Small Business Owners`
Unique identifier of the post author on Facebook. Example: `pfbid02g3sw5paCKX5181uQw8EV7kPuEHfhJRyRFawG41QVdgjQnRirbKkJSvXZmwtSQdfRl`
Display name of the post author. Example: `Ashraf Khan Ashraf`
Full text content of the Facebook group post. Example: `⭐⭐⭐⭐⭐ 100% Permanent & Sticky Reviews – Guaranteed! ⭐⭐⭐⭐⭐
✅ Non-Drop Reviews with Full Warranty
🔹 Services:
✔️ Google Maps | Trustpilot | Facebook
✔️ Negative Review Removal
✔️ With / Without Image Reviews
✔️ 5⭐ Rating Boost
🌍 Countries Available:
🇺🇸 USA | 🇨🇦 Canada | 🇦🇺 Australia | 🇬🇧 UK
🇩🇪 Germany | 🇫🇷 France | 🇮🇹 Italy | 🇪🇸 Spain
🇳🇱 Netherlands | 🇸🇪 Sweden | 🇳🇴 Norway
🇦🇪 UAE | 🇸🇦 Saudi Arabia
📩 Serious Clients Only — Inbox Now!
📞 WhatsApp: +92 3492324208`
Publication date and time of the post in ISO 8601 format. Example: `2026-03-19T11:27:00.000Z`
Unix timestamp of when the post was published. Example: `1773919620`
Total number of reactions on the post (all types combined). Example: `0`
Number of Like reactions on the post. Example: `0`
Number of Love reactions on the post. Example: `0`
Number of Haha reactions on the post. Example: `0`
Number of Wow reactions on the post. Example: `0`
Number of Sad reactions on the post. Example: `0`
Number of Angry reactions on the post. Example: `0`
Number of times the post was shared. Example: `0`
Total number of comments on the post. Example: `0`
URL of the first image attached to the post
Comma-separated list of all image URLs in the post
URL of the video attached to the post
URL of the external link shared in the post
Title of the external link shared in the post
JSON array of comments on the post
Internal Facebook feedback identifier for the post. Example: `ZmVlZGJhY2s6MjMxMTUyOTUxMjcwMTg5Mw==`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 62811,
"object": "result",
"squid": "50db20ac20d8b6d97003259f42fc5cd7",
"run": "a1f6d5f88993b9747d7d6ab2a582b50a",
"url": "https://www.facebook.com/groups/211270969394435/permalink/2311529512701893/",
"facebook_url": "https://www.facebook.com/groups/211270969394435",
"post_id": "2311529512701893",
"group_id": "211270969394435",
"group_title": "U.S. Small Business Owners",
"user_id": "pfbid02g3sw5paCKX5181uQw8EV7kPuEHfhJRyRFawG41QVdgjQnRirbKkJSvXZmwtSQdfRl",
"user_name": "Ashraf Khan Ashraf",
"text": "⭐⭐⭐⭐⭐ 100% Permanent & Sticky Reviews – Guaranteed! ⭐⭐⭐⭐⭐\n✅ Non-Drop Reviews with Full Warranty\n🔹 Services:\n✔️ Google Maps | Trustpilot | Facebook\n✔️ Negative Review Removal\n✔️ With / Without Image Reviews\n✔️ 5⭐ Rating Boost\n🌍 Countries Available:\n🇺🇸 USA | 🇨🇦 Canada | 🇦🇺 Australia | 🇬🇧 UK\n🇩🇪 Germany | 🇫🇷 France | 🇮🇹 Italy | 🇪🇸 Spain\n🇳🇱 Netherlands | 🇸🇪 Sweden | 🇳🇴 Norway\n🇦🇪 UAE | 🇸🇦 Saudi Arabia\n📩 Serious Clients Only — Inbox Now!\n📞 WhatsApp: +92 3492324208",
"time": "2026-03-19T11:27:00.000Z",
"timestamp": 1773919620,
"reaction_count": 0,
"like_count": 0,
"love_count": 0,
"haha_count": 0,
"wow_count": 0,
"sad_count": 0,
"angry_count": 0,
"share_count": 0,
"comments_count": 0,
"image_url": null,
"image_urls": null,
"video_url": null,
"link_url": null,
"link_title": null,
"comments": null,
"feedback_id": "ZmVlZGJhY2s6MjMxMTUyOTUxMjcwMTg5Mw==",
"functions": null,
"native_id": 62811
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/facebook-group-posts-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Facebook Group Posts Scraper settings
Configure your Facebook Group Posts Scraper squid settings. Control result limits and time-based filtering to target specific posts.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_results** | integer | unlimited | Maximum number of posts to collect per group |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique posts across all tasks in the run |
| **fetch\_since** | string | null | Stop scraping when items older than this threshold are reached (based on `published_at`). Use a relative duration (24h, 7d, 2w) or an absolute date (YYYY-MM-DD HH:MM:SS) |
| **fetch\_since\_timezone** | string | null | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Only applies when `fetch_since` is an absolute date — ignored for relative values like `24h` or `7d`. See [supported timezones](/docs/timezones). |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
This scraper requires a synced Facebook account. Add your Facebook cookies (`c_user` and `xs`) in the Accounts section before running.
Use `fetch_since: 7d` to monitor a group for new posts from the last week.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Facebook Group Posts Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 200,
"fetch_since": "7d"
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Facebook Group Posts Scraper (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_results": 200,
"fetch_since": "7d"
}
}
)
data = response.json()
print(f"Settings updated: {data['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Facebook Group Posts Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 200,
"fetch_since": "7d"
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/facebook-marketplace-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add Facebook Marketplace search URLs to your scraper squid
Add Facebook Marketplace search URLs as tasks to your **Facebook Marketplace Scraper** squid. Each task should be a Marketplace search URL with your desired filters applied.
Crawler ID: `640e3d2f62769800fdb05f957f3a2415`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task supports the fields below.
## Task Fields
Facebook Marketplace search URL. Navigate to Marketplace, apply your filters (location, category, price range, etc.), and copy the URL from your browser.
Example: `https://www.facebook.com/marketplace/paris/search?query=piano`
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{ "url": "https://www.facebook.com/marketplace/paris/search?query=piano" },
{ "url": "https://www.facebook.com/marketplace/newyork/search?query=sofa&minPrice=50&maxPrice=500" }
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}", "Content-Type": "application/json"}
squid_hash = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"squid": squid_hash,
"tasks": [
{"url": "https://www.facebook.com/marketplace/paris/search?query=piano"},
{"url": "https://www.facebook.com/marketplace/newyork/search?query=sofa&minPrice=50&maxPrice=500"},
]
}
)
data = response.json()
print(f"Tasks added: {len(data)}")
```
## Response
```json 201 theme={null}
[
{
"id": "TASK_HASH",
"squid": "YOUR_SQUID_HASH",
"url": "https://www.facebook.com/marketplace/paris/search?query=piano",
"status": "pending"
}
]
```
# Credit Cost
Source: https://docs.lobstr.io/examples/facebook-marketplace-scraper/credit-cost
Credit cost for the Facebook Marketplace Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Listings | 1 | 1 credit per listing |
| Get Listing Details | 4 | 4 credits per listing, billed once per squid: on later runs, listings this squid already enriched are skipped |
# Get Results
Source: https://docs.lobstr.io/examples/facebook-marketplace-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped listings from Facebook Marketplace Scraper
Retrieve scraped listings from your **Facebook Marketplace Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Direct URL to the Marketplace listing. Example: `https://www.facebook.com/marketplace/item/123456789/`
Facebook's internal listing ID. Example: `123456789`
Listing title as shown on Marketplace. Example: `Yamaha upright piano — excellent condition`
Price amount as a string (no currency symbol). Example: `450`
ISO currency code. Example: `EUR`
Price with currency symbol as displayed on Marketplace. Example: `€450`
City where the item is located. Example: `Paris`
Array of listing image URLs.
Listing creation date and time (UTC). Example: `2026-07-10T14:23:00`
Whether the item has been marked as sold.
Whether the listing is currently active.
Available delivery methods, comma-separated. Example: `LOCAL_PICKUP, SHIPPING`
Marketplace category the listing belongs to. Example: `Musical Instruments`
`true` when Facebook lists the listing under "Results from outside your search" (outside your search area, or only loosely related to your query), `false` before that section. Empty on browse and category URLs. To skip these listings, set `exclude_outside_search` in your squid settings.
## Detail Fields
The following fields are only populated when `listing_details` is set to `true` in your squid settings.
Full listing description text from the detail page.
Item condition as listed by the seller. Example: `Used - Good`
Precise location text from the listing detail page. Example: `11th arrondissement, Paris`
Latitude coordinate of the listing location. Example: `48.8534`
Longitude coordinate of the listing location. Example: `2.3488`
Display name of the seller. Example: `Marie L.`
Facebook ID of the seller.
Whether the listing is marked as pending (sale in progress).
Whether the listing is hidden from public search.
Whether the authenticated scraping account is the seller of this listing.
Original price before discount, as a numeric string. Example: `600`
Original price before discount, formatted with currency symbol. Example: `€600`
Structured listing attributes provided by the seller (condition, brand, size, etc.).
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 89438,
"object": "result",
"squid": "9f9d8c985d467622ba04fd2a54932402",
"run": "0efdbe4671e8df2cc1265ddb7324bf8f",
"url": "https://www.facebook.com/marketplace/item/1323925843091629/",
"internal_id": "1323925843091629",
"title": "Télévision très bon état",
"price": "55.00",
"currency": "EUR",
"formatted_price": "€55",
"city": "Lyon",
"image_urls": [
"https://scontent.fbcdn.net/img1.jpg",
"https://scontent.fbcdn.net/img2.jpg"
],
"creation_time": "2025-01-15 14:30:00+00:00",
"is_sold": false,
"is_live": true,
"delivery_types": "IN_PERSON",
"category": "TVs",
"is_outside_search": false,
"description": "Piano rock jam rj661.\nPour les enfants, en bon état.",
"condition": "Usado — em boas condições",
"location_text": "Lapeyrouse-Mornay, ARA",
"latitude": 45.326843,
"longitude": 4.993286,
"seller_name": "Angelique Przybylski",
"seller_id": "1057237320",
"is_pending": false,
"is_hidden": false,
"is_viewer_seller": false,
"strikethrough_price": "300",
"strikethrough_price_formatted": "£300",
"listing_attributes": [
{
"attribute_name": "item_condition",
"value": "USED_GOOD",
"label": "Used - Good"
}
],
"functions": null,
"native_id": 89438
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/facebook-marketplace-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure settings for your Facebook Marketplace Scraper squid
Update the configuration of your **Facebook Marketplace Scraper** squid. Pass crawler-specific settings inside the `params` object.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Crawler-specific settings. See fields below.
## Settings Fields
Maximum number of listings to collect per task. Leave empty for unlimited.
Maximum number of unique listings retrieved across all tasks in the entire run. Leave empty for unlimited.
Only collect listings published after this point (based on `creation_time`). Use a relative duration (e.g. `"24h"`, `"7d"`, `"2w"`) or an absolute date (`YYYY-MM-DD` or `YYYY-MM-DD HH:MM`). On search URLs, Facebook's matching Date listed filter (last 24 hours, 7 days or 30 days) is added for you. Older listings are skipped and not billed.
Timezone for interpreting an absolute `fetch_since` date (e.g. `"Europe/Paris"`). Only applies when `fetch_since` is an absolute date — ignored for relative values like `"24h"` or `"7d"`.
Skip the listings Facebook shows under "Results from outside your search" (outside your search area, or only loosely related to your query) and stop paging once that section starts. Skipped listings are not billed. Default: `false`.
Visit each listing's detail page to collect additional fields: full description, condition, precise location (latitude/longitude), seller profile, discount price, and structured listing attributes. Requires one additional request per listing.
To collect only new listings on a schedule, set `fetch_since` to the schedule interval (`"24h"` for a daily run, `"7d"` for a weekly one). It also applies to the listings under "Results from outside your search", so each run collects, and bills, only the listings published since the previous run. Set `exclude_outside_search` to `true` only if you don't want those listings at all.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Facebook Marketplace Paris",
"params": {
"max_results": 200,
"fetch_since": "24h",
"exclude_outside_search": true,
"listing_details": false
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_hash = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_hash}",
headers=headers,
json={
"name": "Facebook Marketplace Paris",
"params": {
"max_results": 200,
"fetch_since": "24h",
"exclude_outside_search": True,
"listing_details": False
}
}
)
data = response.json()
print(f"Squid updated: {data['name']}")
```
## Response
```json 201 theme={null}
{
"id": "YOUR_SQUID_HASH",
"name": "Facebook Marketplace Paris",
"crawler": {
"id": "facebook-marketplace-scraper",
"name": "Facebook Marketplace Scraper",
"slug": "facebook-marketplace-scraper"
},
"params": {
"max_results": 200,
"fetch_since": "24h",
"exclude_outside_search": true,
"listing_details": false
},
"concurrency": 1,
"export_unique_results": true,
"to_complete": true,
"no_line_breaks": false,
"status": "idle"
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/facebook-pages-search-export/add-tasks
POST https://api.lobstr.io/v1/tasks
Add Facebook Pages search URLs to scrape
Add Facebook Pages search URLs to scrape business pages. The scraper extracts page information including contact details, follower counts, and social links.
Crawler ID: `c47dfc2beba9fdc2472d3b3321b06b66`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the Facebook Pages Search Export crawler |
| **tasks** | array | Yes | Array of task objects, each containing a `url` field |
## Task Object
| Field | Type | Required | Description |
| - | - | - | - |
| **url** | string | Yes | Facebook Pages search URL (e.g., `https://www.facebook.com/search/pages?q=coffee%20shop`) |
Perform your search on Facebook first, then copy the URL to preserve all search parameters.
Facebook Pages search URLs follow the format: `https://www.facebook.com/search/pages?q=YOUR_SEARCH_QUERY` where the query should be URL-encoded.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{
"url": "https://www.facebook.com/search/pages?q=coffee%20shop"
}
]
}'
```
```python Python theme={null}
import requests
from urllib.parse import quote
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Build Facebook Pages search URL
search_query = quote("coffee shop")
search_url = f"https://www.facebook.com/search/pages?q={search_query}"
# Add Facebook Pages search task
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"squid": squid_id,
"tasks": [
{"url": search_url}
]
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "82367f24d9450b2222080eed91662968",
"created_at": "2025-07-17T09:06:47.287893",
"is_active": true,
"params": {
"url": "https://www.facebook.com/search/pages?q=coffee%20shop"
},
"module": 115,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/facebook-pages-search-export/credit-cost
Credit cost for the Facebook Pages Search Export
1 credit per page.
# Get Results
Source: https://docs.lobstr.io/examples/facebook-pages-search-export/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Facebook Pages Search Export
Retrieve scraped data from your **Facebook Pages Search Export** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Direct URL to the Facebook page. Example: `https://www.facebook.com/gagnantgagnantbarajeux`
Name of the Facebook page. Example: `Bar à jeux Bordeaux : Gagnant Gagnant`
URL slug of the Facebook page (e.g. used in facebook.com/slug). Example: `gagnantgagnantbarajeux`
Category of the Facebook page (e.g. Restaurant, Brand). Example: `Bar`
Map link for the Facebook page's location. Example: `https://maps.google.com/maps?q=39+quai+de+bacalan%2C+Bordeaux%2C+France`
Full address of the Facebook page's location. Example: `39 quai de bacalan, Bordeaux, France, 33300`
Phone number listed on the Facebook page. Example: `06 28 32 57 39`
Total number of likes on the Facebook page. Example: `576`
Total number of followers of the Facebook page. Example: `576`
Email address listed on the Facebook page. Example: `barajeuxbordeaux@gmail.com`
Website URL linked to the Facebook page. Example: `https://gg33.fr/le-bar-a-jeux/`
Instagram profile URL linked to the Facebook page. Example: `https://www.instagram.com/gagnant_gagnant`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 70787,
"object": "result",
"squid": "fee4f12fb05379a20b11580c92cbf773",
"run": "2ae617390e6a9a0db9483aef252be133",
"url": "https://www.facebook.com/gagnantgagnantbarajeux",
"name": "Bar à jeux Bordeaux : Gagnant Gagnant",
"slug": "gagnantgagnantbarajeux",
"category": "Bar",
"map_url": "https://maps.google.com/maps?q=39+quai+de+bacalan%2C+Bordeaux%2C+France",
"address": "39 quai de bacalan, Bordeaux, France, 33300",
"phone": "06 28 32 57 39",
"likes": 576,
"followers": 576,
"email": "barajeuxbordeaux@gmail.com",
"website": "https://gg33.fr/le-bar-a-jeux/",
"instagram": "https://www.instagram.com/gagnant_gagnant",
"functions": null,
"native_id": 70787
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/facebook-pages-search-export/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Facebook Pages Search Export settings
Configure your Facebook Pages Search Export squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_results** | integer | unlimited | Maximum number of pages to collect per task |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the run |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Facebook Pages Search Export (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Update scraper settings
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Facebook Pages Search Export (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {} # No scraper-specific parameters
}
)
print(response.json())
```
## Response
```json 201 theme={null}
{
"name": "Facebook Pages Search Export (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/facebook-private-group-posts/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Facebook Private Group Posts Scraper squid
Add URLs or inputs to your **Facebook Private Group Posts Scraper** squid. Each task object must include the required fields below.
This scraper requires a connected Facebook account. Go to your squid settings and link your Facebook cookies (`c_user` and `xs`) before running.
Crawler ID: `3eea12bc7d80cf05b6fc38eaf9f28f77`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task supports the fields below.
## Task Fields
URL of a Facebook group to collect posts from. Example: `https://www.facebook.com/groups/336266723393832`
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{ "url": "https://www.facebook.com/groups/336266723393832" },
{ "url": "https://www.facebook.com/groups/another_group_id" }
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_hash = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"squid": squid_hash,
"tasks": [
{"url": "https://www.facebook.com/groups/336266723393832"},
{"url": "https://www.facebook.com/groups/another_group_id"}
]
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
for task in data["tasks"]:
print(f" {task['id']}: {task['params']['url']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"created_at": "2025-06-24T11:11:30.222467",
"is_active": true,
"params": {
"url": "https://www.facebook.com/groups/336266723393832"
},
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/facebook-private-group-posts/credit-cost
Credit cost for the Facebook Private Group Posts Scraper
1 credit per post
# Get Results
Source: https://docs.lobstr.io/examples/facebook-private-group-posts/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Facebook Private Group Posts Scraper
Retrieve scraped data from your **Facebook Private Group Posts Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from.
Hash of a specific run (optional).
Page number (default: 1).
Results per page (default: 50, max: 100).
## Result Fields
Direct URL to the post in the Facebook group. Example: `https://www.facebook.com/groups/336266723393832/permalink/123456789/`
Unique identifier for the Facebook post. Example: `123456789`
Unique identifier for the Facebook group. Example: `336266723393832`
Name of the Facebook group where the post was published. Example: `My Group`
Unique identifier of the post author on Facebook.
Display name of the post author. Example: `John Doe`
Full text content of the post.
Publication date and time of the post in ISO 8601 format. Example: `2026-03-19T11:27:00.000Z`
Unix timestamp of when the post was published. Example: `1773919620`
Total number of likes on the post. Example: `12`
Total number of comments on the post. Example: `5`
Number of times the post was shared. Example: `2`
Number of Like reactions. Example: `10`
Number of Love reactions. Example: `2`
Number of Haha reactions. Example: `0`
Number of Wow reactions. Example: `0`
Number of Sad reactions. Example: `0`
Number of Angry reactions. Example: `0`
URL of the first image attached to the post.
URL of the second image attached to the post.
URL of the video attached to the post.
URL of the external link shared in the post.
Text of the first comment on the post.
Text of the second comment on the post.
Internal Facebook feedback identifier for the post.
## Code Examples
```bash cURL theme={null}
curl -X GET "https://api.lobstr.io/v1/results?squid=YOUR_SQUID_HASH&page=1&page_size=50" \
-H "Authorization: Token YOUR_API_KEY"
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
params = {
"squid": "YOUR_SQUID_HASH",
"page": 1,
"page_size": 50
}
all_results = []
url = f"{BASE_URL}/results"
while True:
response = requests.get(url, headers=headers, params=params)
data = response.json()
all_results.extend(data["data"])
print(f"Fetched page {data['page']} of {data['total_pages']}")
if data["next"] is None:
break
url = data["next"]
params = {}
print(f"\nTotal posts collected: {len(all_results)}")
for post in all_results[:5]:
print(f"- {post.get('user_name')}: {post.get('text', '')[:80]}")
```
## Response
```json 200 theme={null}
{
"total_results": 42,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 42,
"data": [
{
"id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"object": "result",
"squid": "YOUR_SQUID_HASH",
"run": "RUN_HASH",
"url": "https://www.facebook.com/groups/336266723393832/permalink/123456789/",
"post_id": "123456789",
"group_id": "336266723393832",
"group_title": "My Private Group",
"user_id": "987654321",
"user_name": "John Doe",
"text": "Hello everyone! Check out this great resource...",
"time": "2026-03-19T11:27:00.000Z",
"timestamp": 1773919620,
"likes_count": 12,
"comments_count": 5,
"shares_count": 2,
"reaction_like_count": 10,
"reaction_love_count": 2,
"reaction_haha_count": 0,
"reaction_wow_count": 0,
"reaction_sad_count": 0,
"reaction_angry_count": 0,
"image_1": null,
"image_2": null,
"video_url": null,
"link_attachment": "https://example.com/resource",
"comment_1": "Great post!",
"comment_2": "Thanks for sharing.",
"feedback_id": "ZmVlZGJhY2s6MTIzNDU2Nzg5",
"scraping_time": "2026-03-20T09:15:00.000Z"
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/facebook-private-group-posts/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure settings for your Facebook Private Group Posts Scraper squid
Update the configuration of your **Facebook Private Group Posts Scraper** squid. Pass crawler-specific settings inside the `params` object.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Crawler-specific settings. See fields below.
## Settings Fields
Only collect posts published after this point. Use a relative duration (e.g. `"24h"`, `"7d"`, `"2w"`) or an absolute date (`YYYY-MM-DD`).
Timezone for interpreting an absolute `fetch_since` date (e.g. `"Europe/Paris"`). Only applies when `fetch_since` is an absolute date — ignored for relative values like `"24h"` or `"7d"`.
Set `fetch_since` to `null` to collect all posts, or use a relative duration (`"24h"`, `"7d"`, `"2w"`) or absolute date (`YYYY-MM-DD`) to collect only recent posts. When using an absolute date, set `fetch_since_timezone` to interpret it in the correct timezone (e.g. `"Europe/Paris"`).
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Facebook Private Group Posts",
"params": {
"fetch_since": "7d",
"fetch_since_timezone": null
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_hash = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_hash}",
headers=headers,
json={
"name": "Facebook Private Group Posts",
"params": {
"fetch_since": "7d", # relative: "24h", "7d", "2w" | absolute: "2026-01-01"
"fetch_since_timezone": None # e.g. "Europe/Paris" — only used with absolute fetch_since
}
}
)
data = response.json()
print(f"Squid updated: {data['name']}")
```
## Response
```json 201 theme={null}
{
"id": "YOUR_SQUID_HASH",
"name": "Facebook Private Group Posts",
"crawler": {
"id": "3eea12bc7d80cf05b6fc38eaf9f28f77",
"name": "Facebook Private Group Posts Scraper",
"slug": "facebook-private-group-posts"
},
"params": {
"fetch_since": "7d",
"fetch_since_timezone": null
},
"concurrency": 1,
"export_unique_results": true,
"to_complete": true,
"no_line_breaks": false,
"status": "idle",
"created_at": "2025-01-20T10:15:00.000000",
"updated_at": "2025-01-27T14:35:00.000000"
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/glassdoor-jobs-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Glassdoor Jobs Scraper squid
Add URLs or inputs to your **Glassdoor Jobs Scraper** squid.
Crawler ID: `4bc153aae1e138d894b630bf165825ee`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
Glassdoor job search URL, keyword, or single job posting link. Example: `https://www.glassdoor.com/Job/new-york-python-developer-jobs-SRCH_IL.0,8_IC1132348_KO9,25.htm`
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "4bc153aae1e138d894b630bf165825ee",
"tasks": [
{"url": "https://www.glassdoor.com/Job/new-york-python-developer-jobs-SRCH_IL.0,8_IC1132348_KO9,25.htm"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "4bc153aae1e138d894b630bf165825ee",
"tasks": [
{"url": "https://www.glassdoor.com/Job/new-york-python-developer-jobs-SRCH_IL.0,8_IC1132348_KO9,25.htm"}
],
},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.glassdoor.com/Job/new-york-python-developer-jobs-SRCH_IL.0,8_IC1132348_KO9,25.htm"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/glassdoor-jobs-scraper/credit-cost
Credit cost for the Glassdoor Jobs Scraper
1 credit per job posting.
# Get Results
Source: https://docs.lobstr.io/examples/glassdoor-jobs-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Glassdoor Jobs Scraper
Retrieve scraped data from your **Glassdoor Jobs Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Page number (default: 1)
## Result Fields
Glassdoor's unique identifier for the job listing. Example: `JV_KO0,25_KE26,32.htm`
Job title as published by the employer. Example: `Senior Python Developer`
Glassdoor's normalised version of the job title. Example: `Software Engineer`
Direct link to the job listing on Glassdoor. Example: `https://www.glassdoor.com/job-listing/senior-python-developer-acme-corp-JV_KO0,25_KE26,32.htm`
Canonical SEO link to the job listing. Example: `https://www.glassdoor.com/job-listing/senior-python-developer-acme-corp-JV_KO0,25_KE26,32.htm`
Date the job was posted. Example: `2026-09-13T00:00:00Z`
Age of the listing in whole days. Example: `2`
True when the job can be applied to directly on Glassdoor. Example: `false`
True when Glassdoor flags the listing as expired. Example: `false`
True when the listing is a paid placement. Example: `false`
True when the employer is a paid advertiser. Example: `false`
Job location as displayed on Glassdoor. Example: `New York, NY`
Granularity of location: C (city), S (state), N (country). Example: `C`
Glassdoor's internal country identifier. Example: `1`
Low end of Glassdoor's pay estimate (10th percentile). Example: `120000`
Median of Glassdoor's pay estimate (50th percentile). Example: `150000`
High end of Glassdoor's pay estimate (90th percentile). Example: `180000`
Period of salary figures, e.g. ANNUAL or HOURLY. Example: `ANNUAL`
ISO currency code of the salary figures. Example: `USD`
Where the salary comes from (EMPLOYER\_PROVIDED or Glassdoor estimate). Example: `EMPLOYER_PROVIDED`
True when salary was provided by the employer. Example: `true`
Glassdoor's identifier for the hiring company. Example: `1234567`
Name of the hiring company. Example: `Acme Corp`
Short display name of the hiring company. Example: `Acme`
Overall Glassdoor rating, from 0 to 5. Example: `4.2`
URL of the company logo. Example: `https://media.glassdoor.com/sql/1234567/acme-squareLogo.png`
Glassdoor's occupation category for the job. Example: `Software Engineer`
Glassdoor's numeric identifier for the occupation category. Example: `10014`
Full job description (HTML included).
Full job description as plain text.
Employment type(s), comma separated. Example: `FULL_TIME`
Remote-work flag(s), comma separated. Example: `REMOTE`
Education requirements, comma separated. Example: `Bachelor's Degree`
Years of experience required. Example: `3-5 years`
Skills attached to the listing, comma separated. Example: `Python, Django, REST API`
Date Glassdoor last (re)discovered the listing. Example: `2026-09-13T08:00:00Z`
Link that starts the application. Example: `https://www.acme.com/careers/apply/12345`
State or region of the job. Example: `NY`
Country of the job. Example: `United States`
Postal code of the job location. Example: `10001`
Latitude of the job location. Example: `40.7128`
Longitude of the job location. Example: `-74.006`
Link to the company's Glassdoor profile. Example: `https://www.glassdoor.com/Overview/Working-at-Acme-Corp-EI_IE1234567.htm`
Headquarters of the company. Example: `123 Main St, New York, NY 10001`
Type of company, e.g. Company - Private. Example: `Company - Private`
Year the company was founded. Example: `2005`
Company size bucket. Example: `1001 to 5000 Employees`
Glassdoor's company size category. Example: `MID_SIZE`
Estimated revenue bucket. Example: `$100 to $500 million (USD)`
Industry of the company. Example: `Software Development`
Sector of the company. Example: `Information Technology`
The company's own website. Example: `https://www.acme.com`
Work-life balance rating, from 0 to 5. Example: `3.8`
Compensation and benefits rating, from 0 to 5. Example: `3.9`
Senior management rating, from 0 to 5. Example: `3.5`
Culture and values rating, from 0 to 5. Example: `4.0`
Career opportunities rating, from 0 to 5. Example: `3.7`
Share of reviewers who approve of the CEO, 0 to 1. Example: `0.72`
Number of reviews behind the CEO approval score. Example: `312`
Name of the company CEO. Example: `Jane Smith`
Share who would recommend the company, 0 to 1. Example: `0.68`
Total number of company reviews on Glassdoor. Example: `1847`
Benefits rating, from 0 to 5. Example: `3.9`
Number of benefit reviews. Example: `423`
Review highlight sentences from company reviews.
## Code Examples
```bash cURL theme={null}
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=4bc153aae1e138d894b630bf165825ee" \
-d "page=1"
```
```python Python theme={null}
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "4bc153aae1e138d894b630bf165825ee", "page": 1},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"job_id": "JV_KO0,25_KE26,32.htm", "title": "Senior Python Developer", "company_name": "Acme Corp", "location": "New York, NY", "salary_min": 120000, "salary_median": 150000, "salary_max": 180000, "salary_currency": "USD", "company_rating": 4.2, "posted_at": "2026-09-13T00:00:00Z"}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/glassdoor-jobs-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Glassdoor Jobs Scraper settings
Configure your **Glassdoor Jobs Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| location | string | — | City, state or country to search in, e.g. 'New York, NY' |
| date\_posted | string | Any time | Only collect jobs posted within this window: Any time, Last 24 hours, Last 3 days, Last 7 days, Last 14 days, Last 30 days |
| job\_type | string | Any | Employment type: Any, Full-time, Part-time, Contract, Temporary, Intern |
| seniority | string | Any | Seniority level: Any, Internship, Entry Level, Mid Level, Senior Level, Director, Executive |
| remote\_only | boolean | false | Only collect jobs flagged as remote |
| easy\_apply | boolean | false | Only collect jobs that can be applied to directly on Glassdoor |
| salary\_min | integer | — | Min yearly salary in local currency |
| salary\_max | integer | — | Max yearly salary in local currency |
| company\_rating | string | Any | Only collect jobs from companies rated at least this (2.0, 2.5, 3.0, 3.5, 4.0) |
| company\_size | string | Any | Only from companies of this size |
| industry | string | Any | Only from companies in this industry |
| job\_function | string | Any | Only jobs in this job function |
| radius | string | Within 50 km | How far around the location to search |
| sort\_by | string | Relevance | Relevance or Most recent |
| job\_details | boolean | true | Open every job to collect full description, employment type, salary, company info |
| max\_results | integer | 900 | Max jobs per search (Glassdoor max \~900) |
| max\_unique\_results\_per\_run | integer | — | Max unique jobs across all tasks in the run |
| fetch\_since | string | — | Only collect jobs posted after this threshold |
| fetch\_since\_timezone | string | — | Timezone for fetch\_since |
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/4bc153aae1e138d894b630bf165825ee \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"location": "New York, NY",
"date_posted": "Last 7 days",
"job_type": "Full-time",
"seniority": "Mid Level",
"job_details": true,
"max_results": 900
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/4bc153aae1e138d894b630bf165825ee",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"location": "New York, NY",
"date_posted": "Last 7 days",
"job_type": "Full-time",
"seniority": "Mid Level",
"job_details": True,
"max_results": 900,
},
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"location": "New York, NY", "date_posted": "Last 7 days", "job_type": "Full-time", "seniority": "Mid Level", "job_details": true, "max_results": 900}}
```
# Add Task Params
Source: https://docs.lobstr.io/examples/google-maps-leads-scraper/add-task-params
POST https://api.lobstr.io/v1/tasks
Add structured search tasks using city, category, and location parameters
Use this format to dynamically define search inputs using structured metadata like city, category, and country. Location values can be obtained from the Get Geolocation endpoint. This method is ideal for automation and scaling across regions.
Crawler ID: `4734d096159ef05210e0e1677e8be823`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Task Parameters
| Field | Type | Required | Description |
| - | - | - | - |
| **city** | string | Yes | City name with postal code (e.g., `Alpine 91901`) |
| **category** | string | Yes | Business category to search (e.g., `restaurant`) |
| **country** | string | No | Country name (e.g., `United States`) |
| **region** | string | No | State or province (e.g., `California`) |
| **district** | string | No | County or local district (e.g., `San Diego`) |
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the google-maps-leads-scraper crawler |
| **tasks** | array | Yes | Array of task objects with location parameters |
Use the Get Geolocation endpoint to fetch valid values for city, region, and district.
The `city` field must include the postal code (e.g., `Anaheim 92801`).
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tasks": [
{
"city": "Alpine 91901",
"category": "restaurant",
"country": "United States",
"region": "California",
"district": "San Diego"
},
{
"city": "Anaheim 92801",
"category": "restaurant",
"country": "United States"
}
],
"squid": "YOUR_SQUID_HASH"
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Add parameter-based tasks
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"squid": squid_id,
"tasks": [
{
"city": "Alpine 91901",
"category": "restaurant",
"country": "United States",
"region": "California",
"district": "San Diego"
},
{
"city": "Anaheim 92801",
"category": "restaurant",
"country": "United States"
}
]
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
for task in data["tasks"]:
print(f" {task['id']}: {task['params']['city']} - {task['params']['category']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "c3113ec3820d0253e2130b23f5b01a74",
"created_at": "2025-06-24T11:11:30.222467",
"is_active": true,
"params": {
"city": "Alpine 91901",
"category": "restaurant",
"country": "United States",
"region": "California",
"district": "San Diego"
},
"module": 5,
"object": "task"
},
{
"id": "d3deeac80b3dff7be992bb7f5d4ce63d",
"created_at": "2025-06-24T11:11:30.222613",
"is_active": true,
"params": {
"city": "Anaheim 92801",
"category": "restaurant",
"country": "United States"
},
"module": 5,
"object": "task"
}
]
}
```
# Add Task URLs
Source: https://docs.lobstr.io/examples/google-maps-leads-scraper/add-task-urls
POST https://api.lobstr.io/v1/tasks
Add Google Maps search URLs to scrape places from
Use this format if you already have a direct Google Maps search or place URL. This is best for manual inputs or small-scale targeted searches.
Crawler ID: `4734d096159ef05210e0e1677e8be823`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## URL Format
**Google Maps search URL:**
`https://www.google.com/maps/search/restaurant/@43.3928346,5.2662584,14z`
The URL contains the search query and coordinates for the search area.
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the google-maps-leads-scraper crawler |
| **tasks** | array | Yes | Array of task objects, each containing a `url` field |
Only the `url` key is required in each task object.
URLs must match Google Maps search or place format.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tasks": [
{
"url": "https://www.google.com/maps/search/restaurant/@43.3928346,5.2662584,14z"
}
],
"squid": "YOUR_SQUID_HASH"
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Add URL-based tasks
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"squid": squid_id,
"tasks": [
{"url": "https://www.google.com/maps/search/restaurant/@43.3928346,5.2662584,14z"}
]
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicated: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "4ed8a673a01ba193cc43476e60abc5c0",
"created_at": "2025-06-24T11:13:05.720012",
"is_active": true,
"params": {
"url": "https://www.google.com/maps/search/restaurant/@43.3928346,5.2662584,14z"
},
"module": 5,
"object": "task"
}
]
}
```
# Configure Chain
Source: https://docs.lobstr.io/examples/google-maps-leads-scraper/configure-chain
POST https://api.lobstr.io/v1/squids/{squid_hash}/chain
Automatically feed Google Maps leads into a Google Maps Reviews scrape
Once your Google Maps Leads Scraper squid collects place URLs, you can chain it to a **Google Maps Reviews Scraper** so that reviews are fetched automatically for every place found — no manual steps required.
When a leads run completes with a status of `DONE`, the scheduler extracts the `url` field from each result and queues it as a task on the reviews squid, then starts a new run. Runs that end in `ERROR` do not trigger the chain.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Request Body
Hash ID of the Google Maps Reviews Scraper crawler. Retrieve it from `GET /v1/crawlers`.
Maps the `url` field from leads results to the `url` input on the reviews crawler. Always `{"url": "url"}` for this chain.
Whether the reviews run starts automatically. Defaults to `true`.
Name for the auto-created reviews squid. Example: `"Google Maps Reviews (chained)"`.
Concurrency for the reviews squid. Defaults to `1`.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_LEADS_SQUID_HASH/chain" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target_module_id": "GOOGLE_MAPS_REVIEWS_CRAWLER_HASH",
"field_map": {"url": "url"},
"autostart": true,
"cluster_name": "Google Maps Reviews (chained)",
"cluster_concurrency": 3
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {
"Authorization": f"Token {API_KEY}",
"Content-Type": "application/json"
}
leads_squid_id = "YOUR_LEADS_SQUID_HASH"
response = requests.post(
f"{BASE_URL}/squids/{leads_squid_id}/chain",
headers=headers,
json={
"target_module_id": "GOOGLE_MAPS_REVIEWS_CRAWLER_HASH",
"field_map": {"url": "url"},
"autostart": True,
"cluster_name": "Google Maps Reviews (chained)",
"cluster_concurrency": 3
}
)
chain = response.json()
print(f"Chain configured: {chain['id']}")
print(f"Target crawler: {chain['target_module']['public_name']}")
print(f"Autostart: {chain['autostart']}")
```
## Response
```json 201 theme={null}
{
"id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"target_module": {
"id": "9a3f1c8b2e7d4a56f0e1b2c3d4e5f678",
"public_name": "Google Maps Reviews Scraper",
"name": "googlemapreviews_matrix",
"max_concurrency": 10
},
"target_cluster": null,
"field_map": {"url": "url"},
"is_active": true,
"autostart": true,
"cluster_name": "Google Maps Reviews (chained)",
"cluster_concurrency": 3,
"created_at": "2026-04-28T10:00:00Z"
}
```
`target_cluster` is `null` until the first leads run completes and triggers the chain. After that it will contain the auto-created reviews squid.
Set `autostart: false` if you want to review the queued tasks before the reviews run starts.
# Credit Cost
Source: https://docs.lobstr.io/examples/google-maps-leads-scraper/credit-cost
Credit cost for the Google Maps Leads Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Local Businesses | 1 | 1 credit per row. |
| Extract Emails from Website | 1 | 1 credit per row if any email address is found. No email found = 0 credits. |
| Verify Emails | 2 | 2 credits per email if the status is valid or unknown. Invalid = 0 credits. |
| Collect Business Details | 1 | 1 credit per row. |
| Fetch Business Images | 1 | 1 credit per local business, including up to 250 images. |
# Get Geolocation
Source: https://docs.lobstr.io/examples/google-maps-leads-scraper/get-geolocation
GET https://api.lobstr.io/v1/googlemaps/locations
Fetch valid regions, districts, and cities for parameter-based tasks
Use this endpoint to fetch valid regions, districts, and cities used in parameter-based tasks for the Google Maps Search Export crawler. This is essential when constructing structured tasks where accurate location inputs are required.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
ISO 2-letter country code. Example: `US`
State or province name. Example: `California`
County or local district. Example: `San Diego`
City name filter
## How It Works
The value you leave empty determines what the API returns:
* Leave `region` empty to get **regions** for a country
* Provide `region`, leave `city` empty to get **cities** in that region
* Provide `district` to narrow down the city list further
## Query Parameters
| Parameter | Required | Description |
| - | - | - |
| **country\_code** | Yes | ISO 2-letter country code (e.g., `US`, `FR`, `PK`) |
| **region** | Conditional | Required when querying districts or cities. Leave empty to get regions. |
| **district** | No | Narrows the city list within a region |
| **city** | No | Used when retrieving a refined list of locations |
Use the returned values for `region`, `district`, and `city` in parameter-based tasks.
Combine location values with `category` to generate accurate search inputs.
## Code Examples
```bash cURL theme={null}
curl -X GET "https://api.lobstr.io/v1/googlemaps/locations?country_code=US®ion=California&city" \
-H "Authorization: Token YOUR_API_KEY"
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
# Get cities in California, US
response = requests.get(f"{BASE_URL}/googlemaps/locations",
headers=headers,
params={
"country_code": "US",
"region": "California",
"city": ""
}
)
cities = response.json()
print(f"Found {len(cities)} cities")
for city in cities[:10]:
print(f" {city}")
```
## Response
```json 200 theme={null}
[
"Acampo 95220",
"Acton 93510",
"Adelanto 92301",
"Adin 96006",
"Agoura Hills 91301",
"Agoura Hills 91376",
"Aguanga 92536",
"Ahwahnee 93601",
"Alameda 94501",
"Alameda 94502",
"Alamo 94507",
"Albany 94706",
"Albion 95410",
"Alderpoint 95511",
"Alhambra 91801",
"Alhambra 91802",
"Alhambra 91803"
]
```
# Get Results
Source: https://docs.lobstr.io/examples/google-maps-leads-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Google Maps Leads Scraper
Retrieve scraped data from your **Google Maps Leads Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Whether the result passed your geo and category filters. Example: `true`
Reasons why the result did not match your filters
Internal Google Maps hex identifier for the business. Example: `0x30e29f5331420fff:0x40714ec1d130200a`
Google Maps unique numeric business identifier (CID). Example: `4643579285140938762`
Google Places API unique identifier for the business. Example: `ChIJ_w9CMVOf4jARCiAw0cFOcUA`
Direct Google Maps URL to the business listing. Example: `https://www.google.com/maps?cid=4643579285140938762`
Business name as listed on Google Maps. Example: `The Mesh Bangkok Sukhumvit 22`
Full formatted address of the business. Example: `30 Sukhumvit Alley 22, Khwaeng Khlong Toei, Khlong Toei, Bangkok 10110`
Country where the business is located. Example: `Thailand`
ISO 2-letter country code. Example: `TH`
Postal or ZIP code of the business. Example: `10110`
City where the business is located. Example: `Khlong Toei`
Neighborhood extracted from the address components. Example: `Marais`
Latitude coordinate of the business. Example: `13.7296173`
Longitude coordinate of the business. Example: `100.5650145`
Total number of Google reviews. Requires `collect_business_details`. Example: `56`
Average star rating out of 5. Example: `4.8`
Primary business category on Google Maps. Example: `Bar, Restaurant, Sports bar`
URL of the business's main cover image
Primary phone number of the business. Example: `+6622620000`
Business website URL. Example: `https://www.themeshbangkoksukhumvit22.com/`
Link to the business menu. Example: `https://shorturl.at/JJPdY`
Google Plus Code short address. Example: `PHH8+R2 Bangkok`
Whether the business is temporarily closed. Example: `false`
Whether the business is permanently closed. Example: `false`
Whether the listing has a verified owner on Google Maps. Example: `true`
Weekly opening hours schedule. Example: `Monday: 6 AM–1 AM, Tuesday: 6 AM–1 AM, Wednesday: 6 AM–1 AM, Thursday: 6 AM–1 AM, Friday: 6 AM–1 AM, Saturday: 6 AM–1 AM, Sunday: 6 AM–1 AM`
Points of interest and amenity tags listed on the business. Example: `Outdoor seating, Takeaway, Dine-in, Delivery (no), Great beer selection, Great cocktails, Live music, Live performances, Sport, Solo dining, Wheelchair-accessible car park, Wheelchair-accessible entrance, Wheelchair-accessible seating, Assistive hearing loop (no), Alcohol, Beer, Cocktails, Food, Food at bar, Happy-hour drinks, Spirits, Wine, Seating, Table service, Toilet, Wi-Fi, Casual, Cosy, Trendy, Groups, LGBTQ+ friendly, Tourists, Transgender safe space, Accepts reservations, Credit cards, Debit cards, NFC mobile payments, Free parking lot, On-site parking`
Editorial or business-provided description from Google Maps
Price range indicator (e.g. €, ££, \$\$\$)
When the opening hours were last confirmed or updated. Example: `2026-02-28`
Total number of images on the Google Maps listing. Example: `223`
List of all business image URLs. Example: `['https://lh3.googleusercontent.com/p/AF1QipMJGL4SUHrk012w95hubI9iiBHjRBIdo_JhTTf4=w203-h135-k-no', 'https://lh3.googleusercontent.com/gps-cs-s/AHVAwersyBIZuM31K0lIkj2MprffMbJbLi-KNIvW3H4ImbuE6HFjzv-kpZjLRuhIHiFR0jZTqrIOYuPhmCsuZ4AB90i-m-PJwalWyRmCdrcByR98rD4qe9TIJCO6AW5FvDVhdEmVubuoqKBGlBGt=w203-h360-k-no', 'https://lh3.googleusercontent.com/gps-cs-s/AHVAwepLZcxTIYOCVWAFGuq4eqD42U4K_9XpR0CHbL5uInMdYzWoHQCsEK0usvXdn1slJC-Tljb5tQqWh-jfg6bUWgjhhZy52kraloIZJGY4mLfeaDfpb-gjpO0CzdGRAivc_x-m7S4ow1-GwIFN=w236-h100-k-no']`
Health and safety attributes of the business. Example: `false`
Short summary about the business from Google Maps
Crowd and inclusivity attributes (e.g. LGBTQ+ friendly). Example: `Groups, LGBTQ+ friendly, Tourists, Transgender safe space`
Available amenities at the business
Email address found on the business website. Example: `marriottdpo@marriott.com,privacy@marriott.com,themesh@fourpoints.com`
Validation status of the extracted email address. Example: `invalid,valid,valid,invalid,valid,valid,invalid`
Date and time the email address was verified. Example: `2026-02-28T01:19:47+00:00`
Facebook profile URL found on the business website. Example: `https://www.facebook.com/marriottbonvoy, https://www.facebook.com/themeshbangkoksukhumivit22`
Instagram profile URL found on the business website. Example: `https://www.instagram.com/themeshbangkok, https://www.instagram.com/marriottbonvoy`
LinkedIn company page URL found on the business website. Example: `https://www.linkedin.com/in/anthony-capuano-a68390bb, https://www.linkedin.com/company/marriott-international`
Twitter/X profile URL found on the business website. Example: `https://twitter.com/marriottbonvoy`
TikTok profile URL found on the business website
WhatsApp contact URL found on the business website
Pinterest profile URL found on the business website
Secondary phone number found on the business website. Example: `+6622620000`
Number of 1-star reviews. Example: `1`
Number of 2-star reviews. Example: `1`
Number of 3-star reviews. Example: `1`
Number of 4-star reviews. Example: `5`
Number of 5-star reviews. Example: `48`
Service options available at the business, as `{name, available}` objects. Example: `[{"name": "Dine-in", "available": true}, {"name": "Takeaway", "available": true}, {"name": "Delivery", "available": false}]`
Accessibility features, as `{name, available}` objects. Example: `[{"name": "Wheelchair-accessible entrance", "available": true}]`
Business highlights, as `{name, available}` objects. Example: `[{"name": "Live music", "available": true}, {"name": "Sport", "available": true}]`
Accepted payment methods, as `{name, available}` objects. Example: `[{"name": "Credit cards", "available": true}, {"name": "NFC mobile payments", "available": true}]`
Google Knowledge Graph ID of the business. Example: `/g/11rz7_3hkb`
Direct link to the business's Google reviews page
Cleaned business name for email personalization — no punctuation or accents. Example: `The Mesh Bangkok Sukhumvit 22`
Whether the listing is claimed and verified by its owner on Google Maps. Example: `true`
Whether the business serves customers at their location instead of a fixed storefront
Street-level portion of the business address. Example: `30 Sukhumvit Alley 22`
County-level administrative division (US). Example: `Cook County`
Two-letter state code (US). Example: `IL`
First-level administrative division: state, province, or region. Example: `Île-de-France`
IANA timezone of the business location. Example: `America/New_York`
Street View thumbnail image URL for the business location
Display name of the listing owner profile on Google Maps
Stable Google Maps owner/contributor ID
Link to the owner's Google Maps profile
Posts published by the business owner (updates, events, offers)
Posts published by customers about the business
Photo gallery category labels available on the listing (e.g. Food and drink, Exterior, Interior)
Structured menu with dishes: section, description, price, and photo. Requires `collect_business_details`.
Typical spend range reported by Google. Example: `$20–80`
Direct reservation or booking URL for the business
Typical busy times by day and hour (relative busyness 0–100)
Live crowd level right now (only available when the place is open and Google has live data)
Live busyness percentage right now (0–100)
Secondary opening-hours sets: delivery, drive-through, kitchen, etc.
Action buttons available on the Google Maps listing (e.g. order online, reserve a table)
Online food ordering providers available for the business (e.g. Uber Eats, DoorDash)
YouTube channel URL found on the business website
Keywords most mentioned in reviews, with mention counts. Example: `[{"key": "tacos", "count": 42}]`
Related businesses Google shows under "People also search for"
Timestamp when the result was scraped
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 50231,
"object": "result",
"squid": "05d966bcc86f48b6afca3de8a0a0dc5e",
"run": "401314a9bf2547c984a3c5d335273a56",
"match_filters": true,
"no_match_reasons": "",
"zero_x": "0x30e29f5331420fff:0x40714ec1d130200a",
"cid": "4643579285140938762",
"place_id": "ChIJ_w9CMVOf4jARCiAw0cFOcUA",
"url": "https://www.google.com/maps?cid=4643579285140938762",
"name": "The Mesh Bangkok Sukhumvit 22",
"address": "30 Sukhumvit Alley 22, Khwaeng Khlong Toei, Khlong Toei, Bangkok 10110",
"country_name": "Thailand",
"country_code": "TH",
"zip_code": "10110",
"city": "Khlong Toei",
"neighborhood": "Kitisuru",
"lat": 13.7296173,
"lng": 100.5650145,
"ratings": 56,
"score": 4.8,
"category": "Bar, Restaurant, Sports bar",
"main_image_url": null,
"phone": "+6622620000",
"website": "https://www.themeshbangkoksukhumvit22.com/",
"menu": "https://shorturl.at/JJPdY",
"plus_code": "PHH8+R2 Bangkok",
"is_temporarily_closed": false,
"is_permanently_closed": false,
"has_owner": true,
"opening_hours": "Monday: 6 AM–1 AM, Tuesday: 6 AM–1 AM, Wednesday: 6 AM–1 AM, Thursday: 6 AM–1 AM, Friday: 6 AM–1 AM, Saturday: 6 AM–1 AM, Sunday: 6 AM–1 AM",
"poi": "Outdoor seating, Takeaway, Dine-in, Delivery (no), Great beer selection, Great cocktails, Live music, Live performances, Sport, Solo dining, Wheelchair-accessible car park, Wheelchair-accessible entrance, Wheelchair-accessible seating, Assistive hearing loop (no), Alcohol, Beer, Cocktails, Food, Food at bar, Happy-hour drinks, Spirits, Wine, Seating, Table service, Toilet, Wi-Fi, Casual, Cosy, Trendy, Groups, LGBTQ+ friendly, Tourists, Transgender safe space, Accepts reservations, Credit cards, Debit cards, NFC mobile payments, Free parking lot, On-site parking",
"description": null,
"price": null,
"last_opening_hours_updated_at": "2026-02-28",
"images_count": 223,
"images": [
"https://lh3.googleusercontent.com/p/AF1QipMJGL4SUHrk012w95hubI9iiBHjRBIdo_JhTTf4=w203-h135-k-no",
"https://lh3.googleusercontent.com/gps-cs-s/AHVAwersyBIZuM31K0lIkj2MprffMbJbLi-KNIvW3H4ImbuE6HFjzv-kpZjLRuhIHiFR0jZTqrIOYuPhmCsuZ4AB90i-m-PJwalWyRmCdrcByR98rD4qe9TIJCO6AW5FvDVhdEmVubuoqKBGlBGt=w203-h360-k-no",
"https://lh3.googleusercontent.com/gps-cs-s/AHVAwepLZcxTIYOCVWAFGuq4eqD42U4K_9XpR0CHbL5uInMdYzWoHQCsEK0usvXdn1slJC-Tljb5tQqWh-jfg6bUWgjhhZy52kraloIZJGY4mLfeaDfpb-gjpO0CzdGRAivc_x-m7S4ow1-GwIFN=w236-h100-k-no"
],
"health": false,
"about": null,
"crowd": "Groups, LGBTQ+ friendly, Tourists, Transgender safe space",
"amenities": null,
"email": "marriottdpo@marriott.com,privacy@marriott.com,themesh@fourpoints.com",
"email_status": "invalid,valid,valid,invalid,valid,valid,invalid",
"email_verified_at": "2026-02-28T01:19:47+00:00",
"facebook": "https://www.facebook.com/marriottbonvoy, https://www.facebook.com/themeshbangkoksukhumivit22",
"instagram": "https://www.instagram.com/themeshbangkok, https://www.instagram.com/marriottbonvoy",
"linkedin": "https://www.linkedin.com/in/anthony-capuano-a68390bb, https://www.linkedin.com/company/marriott-international",
"twitter": "https://twitter.com/marriottbonvoy",
"tiktok": "https://www.tiktok.com/@mybrand",
"whatsapp": "https://wa.me/+12125551234",
"pinterest": "https://www.pinterest.com/mybrand/",
"additional_phone": "+6622620000",
"reviews_per_score_1": 1,
"reviews_per_score_2": 1,
"reviews_per_score_3": 1,
"reviews_per_score_4": 5,
"reviews_per_score_5": 48,
"service_options": [
{
"name": "Dine-in",
"available": true
},
{
"name": "Takeout",
"available": true
},
{
"name": "Delivery",
"available": false
},
{
"name": "Outdoor seating",
"available": true
}
],
"accessibility": [
{
"name": "Wheelchair accessible entrance",
"available": true
},
{
"name": "Wheelchair accessible seating",
"available": true
},
{
"name": "Wheelchair accessible parking lot",
"available": false
}
],
"highlights": [
{
"name": "Great cocktails",
"available": true
},
{
"name": "Live music",
"available": true
},
{
"name": "Solo dining",
"available": true
}
],
"payment_methods": [
{
"name": "Credit cards",
"available": true
},
{
"name": "Debit cards",
"available": true
},
{
"name": "NFC mobile payments",
"available": true
}
],
"kgmid": "/g/11js_225mm",
"reviews_link": "https://search.google.com/local/reviews?placeid=ChIJ_w9CMVOf4jARCiAw0cFOcUA",
"name_for_emails": "The Mesh Bangkok Sukhumvit 22",
"is_verified": true,
"area_service": false,
"street_address": "30 Sukhumvit Alley 22",
"county": "New York County",
"state_code": "NY",
"region": "Bangkok",
"timezone": "Asia/Bangkok",
"streetview_url": "https://streetviewpixels-pa.googleapis.com/v1/thumbnail?panoid=KVaM9jeAr5qrP89jsABykw&w=211&h=120",
"owner_name": "The Mesh Bangkok",
"owner_id": "103158630405856889907",
"owner_link": "https://www.google.com/maps/contrib/103158630405856889907",
"owner_posts": [
{
"title": "Graduation Catering Made Easy",
"text": "Enjoy your favorite P.F. Chang's dishes...",
"type": "offer",
"posted_at": "2026-05-19T12:00:07",
"expires_at": "2026-06-21T22:00:00",
"cta_label": "View Offer",
"cta_url": "https://search.google.com/local/posts?...",
"image": "https://lh3.googleusercontent.com/geougc/AF1QipNyxlNd...",
"promo_code": "GRADUATE26",
"id": "3182640778066025502"
}
],
"customer_posts": [],
"image_categories": [
"All",
"Latest",
"Videos",
"Menu",
"Food & drink",
"Vibe",
"By owner",
"Street View & 360°"
],
"menu_items": [
{
"section": "Most Popular",
"name": "Mongolian Beef",
"description": "Sweet soy glaze, flank steak, garlic, snipped green onion",
"price": "$30.29",
"image": "https://lh3.googleusercontent.com/p/AF1QipN8CQst1I4fIBZW60C8LiCNsfb5Xsd-0gGFVuXl=s10000"
}
],
"price_range": "$20–80",
"booking_link": "https://reserve.resdiary.com/widget/Standard/TheMesh/9999",
"popular_times": "Sunday: 6 AM 0, 7 AM 0, 8 AM 0, 9 AM 0, 10 AM 0, 11 AM 28, 12 PM 35, 1 PM 48, 2 PM 47, 3 PM 50, 4 PM 34, Monday: 10 AM 26, 11 AM 36, 12 PM 45, 1 PM 41",
"popular_times_live": "Not too busy",
"popular_times_live_percent": 13,
"other_hours": [
{
"name": "Delivery",
"hours": {
"Monday": "4:10 AM–4 AM",
"Tuesday": "4:10 AM–4 AM"
}
}
],
"actions": [
{
"type": "order_online",
"label": "Order online",
"urls": [
"https://www.google.com/viewer/chooseprovider?..."
]
},
{
"type": "reserve",
"label": "Reserve a table",
"urls": [
"https://reserve.resdiary.com/..."
]
}
],
"order_providers": [
{
"name": "Uber Eats",
"url": "https://www.ubereats.com/store/the-mesh-bangkok"
},
{
"name": "Grab",
"url": "https://food.grab.com/..."
}
],
"youtube": "https://www.youtube.com/@mybrand",
"reviews_tags": [
{
"tag": "mongolian beef",
"count": 44
},
{
"tag": "crispy honey shrimp",
"count": 7
}
],
"people_also_search": [
{
"name": "Han Dynasty",
"categories": [
"Sichuan",
"Chinese",
"Restaurant"
],
"score": 4.3,
"reviews": 1537,
"lat": 40.732426,
"lng": -73.9881724,
"url": "https://www.google.com/maps?cid=11645400735119734079"
}
],
"scraping_time": "2026-02-28T01:19:47+00:00",
"functions": null,
"native_id": 50231
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/google-maps-leads-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Google Maps Leads Scraper parameters
Configure the scraper parameters to control how places are collected. These settings include language, location context, filters, and optional data collection features.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **country** | string | — | Regional context for search results (e.g., `United States`) |
| **ratings** | string | Any rating | Minimum rating filter: `Any rating`, `2.5+`, `3.0+`, `3.5+`, `4.0+`, `4.5+` |
| **max\_rating** | string | Any rating | Maximum rating filter. Combine with `ratings` to define a score range (e.g. collect only 3–4 star businesses) |
| **min\_reviews** | integer | — | Only collect places with at least this many reviews |
| **max\_reviews** | integer | — | Only collect places with at most this many reviews |
| **exact\_name\_match** | boolean | false | Only collect places whose name matches your search query — useful to target a specific brand or chain |
| **phone\_filter** | string | all | Filter by phone presence: `all`, `with_phone`, `without_phone` |
| **verified\_filter** | string | all | Filter by owner-claimed status: `all`, `verified_only`, `unverified_only` |
| **language** | string | — | Language for place names and metadata (e.g., `English (United States)`) |
| **max\_results** | integer | unlimited | Maximum places to collect before task ends |
| **geo\_match** | boolean | true | Only return results that geographically match the searched location |
| **category\_match** | boolean | true | Only return results that match the searched business category |
| **skip\_closed** | boolean | false | Skip permanently closed businesses |
| **website\_filter** | string | all | Filter by website presence: `all`, `with_website`, `without_website` |
| **skip\_without\_email** | boolean | false | Skip businesses where no email address was found |
## Optional Functions
Enable these in the `params.functions` object:
| Function | Type | Description |
| - | - | - |
| **extract\_emails\_from\_website** | boolean | Visit business website to extract email, Facebook, Instagram, and additional phone |
| **fetch\_business\_images** | boolean | Collect all image URLs from the Google Place page |
| **collect\_business\_details** | boolean | Collect additional metadata like plus\_code, poi, health, and last\_opening\_hours\_updated\_at |
Enabling `extract_emails_from_website`, `fetch_business_images`, or `collect_business_details` may incur additional credits.
**Backward compatibility:** The old function names `collect_contacts`, `images`, and `details` are still accepted but deprecated. Migrate to the new names listed above.
Set `export_unique_results: true` to avoid duplicate entries when places appear multiple times in search results.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Google Maps Search Export",
"no_line_breaks": true,
"params": {
"country": "United States",
"ratings": "Any rating",
"language": "English (United States)",
"functions": {
"fetch_business_images": true,
"collect_business_details": true,
"extract_emails_from_website": true
},
"max_results": 200
},
"to_complete": false,
"export_unique_results": true
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Update scraper settings
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Google Maps Search Export",
"no_line_breaks": True,
"params": {
"country": "United States",
"ratings": "Any rating",
"language": "English (United States)",
"functions": {
"fetch_business_images": True,
"collect_business_details": True,
"extract_emails_from_website": True
},
"max_results": 200
},
"to_complete": False,
"export_unique_results": True
}
)
data = response.json()
print(f"Updated: {data['name']}")
print(f"Max results: {data['params']['max_results']}")
```
## Response
```json 201 theme={null}
{
"name": "Google Maps Search Export",
"no_line_breaks": true,
"params": {
"country": "United States",
"ratings": "Any rating",
"language": "English (United States)",
"functions": {
"fetch_business_images": true,
"collect_business_details": true,
"extract_emails_from_website": true
},
"max_results": 200
},
"to_complete": false,
"export_unique_results": true
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/google-maps-reviews-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add Google Maps place URLs to scrape reviews from
Add Google Maps place URLs as tasks to your squid. The scraper will extract reviews from each place you provide.
You can use either the short CID format or the full Google Maps URL.
Crawler ID: `e625ce52e98a6d4d1b53ef36dff7dacb`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Supported URL Formats
**Short CID format:**
`https://maps.google.com/?cid=1357935577401699828`
**Full Google Maps URL:**
`https://www.google.com/maps/place/Restaurant+Name/@48.8499542,2.3524796,17z/...`
Both formats work - use whichever is easier for your workflow.
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the google-maps-reviews-scraper crawler |
| **tasks** | array | Yes | Array of task objects, each containing a `url` field |
You can add up to 1000 tasks in a single request for bulk operations.
The CID (Customer ID) can be found in the Google Maps URL after `cid=` or extracted from the place's share link.
Duplicate URLs are automatically detected and won't be added twice.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "b6ab0f03b02e472a8e2ab0b16b4fdd0f",
"tasks": [
{"url": "https://maps.google.com/?cid=1357935577401699828"},
{"url": "https://www.google.com/maps/place/La+Tour+d'\''Argent/@48.8499542,2.3524796,17z"}
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
# Add Google Maps place URLs to scrape reviews
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"squid": "b6ab0f03b02e472a8e2ab0b16b4fdd0f",
"tasks": [
{"url": "https://maps.google.com/?cid=1357935577401699828"},
{"url": "https://www.google.com/maps/place/La+Tour+d'Argent/@48.8499542,2.3524796,17z"}
]
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates skipped: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "8c15009a391a79151873fe9451285e90",
"created_at": "2025-03-17T11:56:51.691986",
"is_active": true,
"params": {
"url": "https://maps.google.com/?cid=1357935577401699828"
},
"object": "task"
},
{
"id": "a6ed45088d82beef3d254679457b5eb6",
"created_at": "2025-03-17T11:56:51.692109",
"is_active": true,
"params": {
"url": "https://www.google.com/maps/place/La+Tour+d'Argent/@48.8499542,2.3524796,17z"
},
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/google-maps-reviews-scraper/credit-cost
Credit cost for the Google Maps Reviews Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Reviews | 0.2 | 0.2 credit per review |
| Get Short Review Link | 1 | 1 credit per review |
# Get Results
Source: https://docs.lobstr.io/examples/google-maps-reviews-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Google Maps Reviews Scraper
Retrieve scraped data from your **Google Maps Reviews Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Google Maps unique numeric business identifier (CID). Example: `6617096495883696522`
Internal Google Maps hex identifier for the reviewed business. Example: `0x0:0x5bd4a63441a1398a`
Google Places API unique identifier for the reviewed business. Example: `ChIJg4octORx5kcRijmhQTSm1Fs`
Name of the business or place being reviewed. Example: `La Rôtisserie d'Argent`
Full formatted address of the reviewed business. Example: `19 Quai de la Tournelle, 75005 Paris, France`
Unique internal identifier for the Google Maps review. Example: `Ci9DQUlRQUNvZENodHljRjlvT2pnNVJFRnVlR0pFY2s5dFREUjBTa2hrT1hJeGRrRRAB`
Display name of the reviewer on Google Maps. Example: `za_zsc`
URL to the reviewer's Google Maps profile page. Example: `https://www.google.com/maps/contrib/103634612974133475591?hl=en`
Internal Google identifier for the reviewer. Example: `103634612974133475591`
Total number of reviews the reviewer has posted on Google Maps. Example: `657`
URL of the reviewer's Google Maps profile picture. Example: `https://lh3.googleusercontent.com/a-/ALV-UjVQx5jp1mzVPivrjtNQVobRCTB5v_tmqt0NMCVRZfksPaFeaLf6`
Whether the reviewer is a Google Maps Local Guide. Example: `true`
Additional metadata associated with the Google Maps review. Example: `{'Food': 5, 'Service': 5, 'Meal type': 'Dinner', 'Atmosphere': 5, 'Noise level': 'Quiet, easy to talk', 'Price per person': '€70–80'}`
Star rating given by the reviewer (1 to 5). Example: `5`
Whether the review text has been edited after initial publication. Example: `false`
Date the review was last modified. Example: `4 months ago`
Date and time when the review was last modified in ISO 8601 format. Example: `2025-11-02T06:06:55+00:00`
Date and time when the review was first published in ISO 8601 format. Example: `2025-11-02T06:06:55+00:00`
Direct URL to the review on Google Maps. Example: `https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT2pnNVJFRnVlR0pFY2s5dFREUjBTa2hrT1hJeGRrRRAB!2m1!1s0x0:0x5bd4a63441a1398a!3m1!1s2@1:CAIQACodChtycF9oOjg5REFueGJEck9tTDR0SkhkOXIxdkE%7C%7C?hl=en`
Shortened URL link to the review. Example: `https://maps.app.goo.gl/3e7En48M3z1wDMQW8`
Full text content of the review. Example: `Its recommended to book in advance to come in this restaurant. The food was unbelievably good! The chicken was amazing. Next time will look to order the duck`
Original review text before Google auto-translation. Example: `Its recommended to book in advance to come in this restaurant. The food was unbelievably good! The chicken was amazing. Next time will look to order the duck`
Response from the business owner to the review. Example: `Dear Mrs, Dear Sir, We are delighted to hear that you enjoyed your meal with us, especially the chicken, it is always a crowd-pleaser. The duck is another fantastic choice, and we are sure you will love it just as much. Looking forward to welcoming you back soon! Kindest regards, The Tour d'Argent team.`
List of photo URLs attached to the review. Example: `https://lh3.googleusercontent.com/geougc-cs/ABOP9puZE5nDT2asJMyqaTPxHdssu43zbZ_VNmkxTL1JA0qycTf-ZTS2EFa3t8xzKr-XwOlVJYky3G5Rk7O-j1ggE8j12fGKCpNwBLnkknKKSh5KukPNCoepFdfhyYy3SaZlVS9dH75rUlGAt5NE, https://lh3.googleusercontent.com/geougc-cs/ABOP9ptbnmUW8D04kRcRbbvHKx0xxb0Dq8sXRWP-9BpVWTIALfm7Zc3I8HPpYwx_wOGzHfEo91USZgMW1mAjfY1lnPMPlVhaNHj75dgVovt_6P1HeUSM6V_D4EjF_LjUMosTQhknmRSJqnzgD4Cc`
Time period the reviewer visited the place (e.g. month and year). Example: `2025-11-24T23:00:00+00:00`
Number of users who found the review helpful (thumbs up). Example: `0`
ISO language code of the review. Example: `en`
Average star rating for the reviewed business on Google Maps. Example: `4.5`
Total number of reviews for the reviewed business on Google Maps. Example: `0`
Country from which the review was posted. Example: `Google`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 55637,
"object": "result",
"squid": "07ef2fa1fd109d60c540e374b1de8605",
"run": "434139cc133dd78f0e51862230b220ce",
"cid": "6617096495883696522",
"zero_x": "0x0:0x5bd4a63441a1398a",
"place_id": "ChIJg4octORx5kcRijmhQTSm1Fs",
"place_name": "La Rôtisserie d'Argent",
"place_address": "19 Quai de la Tournelle, 75005 Paris, France",
"internal_review_id": "Ci9DQUlRQUNvZENodHljRjlvT2pnNVJFRnVlR0pFY2s5dFREUjBTa2hrT1hJeGRrRRAB",
"user_name": "za_zsc",
"user_link": "https://www.google.com/maps/contrib/103634612974133475591?hl=en",
"user_internal_id": 103634612974133475591,
"user_reviews_count": 657,
"user_image_url": "https://lh3.googleusercontent.com/a-/ALV-UjVQx5jp1mzVPivrjtNQVobRCTB5v_tmqt0NMCVRZfksPaFeaLf6",
"is_user_local_guide": true,
"review_metadata": {
"Food": 5,
"Service": 5,
"Meal type": "Dinner",
"Atmosphere": 5,
"Noise level": "Quiet, easy to talk",
"Price per person": "€70–80"
},
"score": 5,
"is_modified": false,
"modified_at": "4 months ago",
"modified_at_datetime": "2025-11-02T06:06:55+00:00",
"published_at_datetime": "2025-11-02T06:06:55+00:00",
"review_link": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT2pnNVJFRnVlR0pFY2s5dFREUjBTa2hrT1hJeGRrRRAB!2m1!1s0x0:0x5bd4a63441a1398a!3m1!1s2@1:CAIQACodChtycF9oOjg5REFueGJEck9tTDR0SkhkOXIxdkE%7C%7C?hl=en",
"short_review_link": "https://maps.app.goo.gl/3e7En48M3z1wDMQW8",
"text": "Its recommended to book in advance to come in this restaurant. The food was unbelievably good! The chicken was amazing. Next time will look to order the duck",
"original_text": "Its recommended to book in advance to come in this restaurant. The food was unbelievably good! The chicken was amazing. Next time will look to order the duck",
"response_from_owner": "Dear Mrs, Dear Sir, We are delighted to hear that you enjoyed your meal with us, especially the chicken, it is always a crowd-pleaser. The duck is another fantastic choice, and we are sure you will love it just as much. Looking forward to welcoming you back soon! Kindest regards, The Tour d'Argent team.",
"pictures": "https://lh3.googleusercontent.com/geougc-cs/ABOP9puZE5nDT2asJMyqaTPxHdssu43zbZ_VNmkxTL1JA0qycTf-ZTS2EFa3t8xzKr-XwOlVJYky3G5Rk7O-j1ggE8j12fGKCpNwBLnkknKKSh5KukPNCoepFdfhyYy3SaZlVS9dH75rUlGAt5NE, https://lh3.googleusercontent.com/geougc-cs/ABOP9ptbnmUW8D04kRcRbbvHKx0xxb0Dq8sXRWP-9BpVWTIALfm7Zc3I8HPpYwx_wOGzHfEo91USZgMW1mAjfY1lnPMPlVhaNHj75dgVovt_6P1HeUSM6V_D4EjF_LjUMosTQhknmRSJqnzgD4Cc",
"visited_in": "2025-11-24T23:00:00+00:00",
"total_likes": 0,
"lang": "en",
"place_average_score": 4.5,
"total_reviews": 0,
"origin": "Google",
"functions": null,
"native_id": 55637
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/google-maps-reviews-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Google Maps Reviews Scraper parameters
Configure the scraper parameters to control how reviews are collected. These settings determine sorting, filtering, and what data is extracted.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **sort\_by** | string | newest | Sort reviews: `newest`, `most_relevant`, `highest_rating`, or `lowest_rating` |
| **fetch\_since** | string | null | Stop scraping when items older than this threshold are reached (based on `modified_at_datetime`). Use a relative duration (24h, 7d, 2w) or an absolute date (YYYY-MM-DD HH:MM:SS) |
| **fetch\_since\_timezone** | string | null | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Only applies when `fetch_since` is an absolute date — ignored for relative values like `24h` or `7d`. See [supported timezones](/docs/timezones). |
| **max\_results** | integer | null | Maximum number of reviews to collect per place |
| **max\_unique\_results\_per\_run** | integer | null | Maximum unique results across all tasks in the entire run |
| **skip\_reviews\_without\_text** | boolean | false | Skip reviews that have no text content |
| **skip\_reviews\_without\_image** | boolean | false | Skip reviews that have no attached pictures |
| **rating\_filter** | string | All | Filter reviews by star rating. `All` keeps every review; `Minimum rating` keeps only reviews at or above `min_rating_score`; `Exact rating` keeps only reviews matching `min_rating_score` exactly |
| **min\_rating\_score** | integer | null | Minimum star rating to include (1–5). Used when `rating_filter` is `Minimum rating` or `Exact rating` |
| **max\_rating\_score** | integer | null | Maximum star rating to include (1–5). Used with `min_rating_score` to define a range |
| **language** | string | English (United States) | Language for extracted reviews |
| **review\_origin** | string | All sources | Filter reviews by source. `All sources` collects Google reviews and aggregator reviews. Pass a specific aggregator name to filter to that source only |
| **functions.get\_short\_review\_link** | boolean | false | Collect shortened review links (1 credit per review) |
## Squid Settings
You can also configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping workers (1-10) |
| **export\_unique\_results** | boolean | Only export unique results (deduplicated) |
| **run\_notify** | string | When to send notifications: `on_success`, `on_failure`, `always`, `never` |
| **timezone** | string | Timezone for timestamps (e.g., `Europe/Paris`) |
Use `sort_by: newest` to monitor recent reviews for reputation management.
Set `fetch_since` to limit results to recent reviews only, reducing processing time and costs.
Enabling `functions.get_short_review_link` costs 1 credit per review. Only enable if you need shortened URLs.
**Backward compatibility:** The old function name `short_link` is still accepted but deprecated. Migrate to `get_short_review_link`.
Changes take effect on the next run. Running jobs use the settings from when they started.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/b6ab0f03b02e472a8e2ab0b16b4fdd0f" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Restaurant Reviews Paris",
"concurrency": 1,
"export_unique_results": true,
"run_notify": "on_success",
"timezone": "Europe/Paris",
"params": {
"sort_by": "newest",
"fetch_since": null,
"max_results": 20,
"skip_reviews_without_text": false,
"skip_reviews_without_image": false,
"rating_filter": "All",
"language": "English (United States)",
"functions": {
"get_short_review_link": false
}
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "b6ab0f03b02e472a8e2ab0b16b4fdd0f"
# Configure scraper settings
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Restaurant Reviews Paris",
"concurrency": 1,
"export_unique_results": True,
"run_notify": "on_success",
"timezone": "Europe/Paris",
"params": {
"sort_by": "newest",
"fetch_since": None,
"max_results": 20,
"skip_reviews_without_text": False,
"skip_reviews_without_image": False,
"rating_filter": "All",
"language": "English (United States)",
"functions": {
"get_short_review_link": False
}
}
}
)
data = response.json()
print(f"Settings updated: {data['name']}")
print(f"Sort by: {data['params']['sort_by']}")
print(f"Max results: {data['params']['max_results']}")
```
## Response
```json 201 theme={null}
{
"name": "Restaurant Reviews Paris",
"no_line_breaks": true,
"params": {
"sort_by": "newest",
"fetch_since": null,
"max_results": 20,
"skip_reviews_without_text": false,
"skip_reviews_without_image": false,
"rating_filter": "All",
"language": "English (United States)",
"functions": {
"get_short_review_link": false
}
},
"to_complete": false,
"run_notify": "on_success",
"export_unique_results": true
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/google-news-search-export/add-tasks
POST https://api.lobstr.io/v1/tasks
Add keyword or topic tasks to scrape Google News articles
Add keyword or topic tasks to scrape Google News articles. Each task represents a search query or topic that will fetch matching articles from Google News.
Crawler ID: `06faf01896336c01ffb5e96d13dd406c`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the google-news-search-export crawler |
| **tasks** | array | Yes | Array of task objects, each containing a `keyword` field |
## Task Object
| Field | Type | Required | Description |
| - | - | - | - |
| **keyword** | string | Yes | A search query (e.g., `climate change`) **or** a predefined Google News topic in CAPS: `WORLD`, `NATION`, `BUSINESS`, `TECHNOLOGY`, `ENTERTAINMENT`, `SPORTS`, `SCIENCE`, `HEALTH` |
To scrape a specific topic page or section URL from news.google.com, set `topic_url` in the squid settings instead — task keywords are ignored when `topic_url` is set.
Configure time range, language, and date filters in the squid settings.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tasks": [
{"keyword": "crab"},
{"keyword": "climate change"}
],
"squid": "YOUR_SQUID_HASH"
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Add keyword-based news search tasks
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"squid": squid_id,
"tasks": [
{"keyword": "crab"},
{"keyword": "climate change"}
]
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
for task in data["tasks"]:
print(f" {task['id']}: {task['params']['keyword']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "5f5ccd42b74cf18196dcb7fe14fb8030",
"created_at": "2025-07-04T04:51:12.532884",
"is_active": true,
"params": {
"keyword": "crab"
},
"module": 131,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/google-news-search-export/credit-cost
Credit cost for the Google News Search Export
1 credit per news article.
# Get Results
Source: https://docs.lobstr.io/examples/google-news-search-export/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Google News Search Export
Retrieve scraped data from your **Google News Search Export** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Headline of the news article. Example: `A robust future? Why Brazil's 'bitter' coffee is thriving as the climate crisis hits global crops`
Short summary or excerpt of the article as shown in Google News. Example: `Long seen as the poor relation to arabica, small growers in the Amazon are rebooting robusta's bitter reputation, which can thrive in higher...`
Date the article was published. Example: `2026-03-18 13:12:00`
Direct URL to the news article. Example: `https://www.theguardian.com/global-development/2026/mar/18/a-robust-future-why-brazils-bitter-coffee-is-thriving-as-the-climate-crisis-hits-global-crops`
Name of the news source or publisher. Example: `The Guardian`
URL of the article's thumbnail or cover image. Example: `https://i.guim.co.uk/img/media/47c48e5316362bd18c7904f551dd75ebde952c63/0_0_7008_4672/master/7008.jpg?width=465&dpr=1&s=none&crop=none`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 68697,
"object": "result",
"squid": "4cb2f1c78f37217ff259a9fc178b96d5",
"run": "f30902df7baa23de90ad80222a80b115",
"title": "A robust future? Why Brazil's 'bitter' coffee is thriving as the climate crisis hits global crops",
"short_description": "Long seen as the poor relation to arabica, small growers in the Amazon are rebooting robusta's bitter reputation, which can thrive in higher...",
"published_at": "2026-03-18 13:12:00",
"url": "https://www.theguardian.com/global-development/2026/mar/18/a-robust-future-why-brazils-bitter-coffee-is-thriving-as-the-climate-crisis-hits-global-crops",
"source": "The Guardian",
"image": "https://i.guim.co.uk/img/media/47c48e5316362bd18c7904f551dd75ebde952c63/0_0_7008_4672/master/7008.jpg?width=465&dpr=1&s=none&crop=none",
"functions": null,
"native_id": 68697
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/google-news-search-export/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Google News Search Export parameters
Configure the scraper parameters to control how Google News articles are collected. These settings include language, recency filters, result limits, and topic-based scraping.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **language** | string | — | Country edition and UI language for Google News (e.g., `English (United States)`) |
| **time\_range** | string | — | Filter by recency: `Any time`, `Past hour`, `Past 24h`, `Past week`, `Past year`. The tighter of `time_range` and `fetch_since` wins. |
| **max\_results** | integer | 100 | Maximum articles to scrape per task. For keyword tasks requesting more than 100, the scraper walks backwards day by day from today (\~100 articles per day). For topic tasks, limited to what the topic page returns (\~100–200 articles). |
| **topic\_url** | string | — | Scrape a Google News topic instead of task keywords. Accepts a predefined topic name (`WORLD`, `NATION`, `BUSINESS`, `TECHNOLOGY`, `ENTERTAINMENT`, `SPORTS`, `SCIENCE`, `HEALTH`) or a topic/section URL from news.google.com (`https://news.google.com/topics/{id}` or `.../sections/{sid}`). When set, task keywords are ignored — a single task is enough. |
| **fetch\_since** | string | — | Stop collecting articles older than this threshold. Use a relative duration (`24h`, `7d`, `2w`) or an absolute date (`YYYY-MM-DD HH:MM:SS`). Combines with `time_range` — the tighter constraint wins. |
| **fetch\_since\_timezone** | string | — | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Ignored for relative values. |
Use `topic_url: TECHNOLOGY` to monitor a full Google News topic section without managing individual keyword tasks.
Use `fetch_since: 7d` combined with `time_range: Past week` to ensure you only collect recent articles.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Google News Search Export",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"language": "English (United States)",
"time_range": "Past week",
"max_results": 100,
"fetch_since": "7d"
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Update scraper settings
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Google News Search Export",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"language": "English (United States)",
"time_range": "Past week",
"max_results": 100,
"fetch_since": "7d"
}
}
)
data = response.json()
print(f"Updated: {data['name']}")
print(f"Time range: {data['params']['time_range']}")
print(f"Max results: {data['params']['max_results']}")
```
## Response
```json 201 theme={null}
{
"name": "Google News Search Export",
"no_line_breaks": true,
"params": {
"language": "English (United States)",
"time_range": "Past week",
"max_results": 100,
"fetch_since": "7d"
},
"to_complete": false,
"export_unique_results": true
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/google-play-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Google Play Store Scraper squid
Add URLs, package ids or keywords to your **Google Play Store Scraper** squid.
Crawler ID: `92c970c6f2a2b2018f4a291aeed1e3d5`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
Paste a Google Play app link, a Play Store search link, an app's package ID such as `com.whatsapp`, or just type a keyword. A keyword or a Play Store search link returns the first 30 apps Google Play shows for it. Example: `https://play.google.com/store/apps/details?id=com.whatsapp`
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://play.google.com/store/apps/details?id=com.whatsapp"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://play.google.com/store/apps/details?id=com.whatsapp"}
],
},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://play.google.com/store/apps/details?id=com.whatsapp"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/google-play-scraper/credit-cost
Credit cost for the Google Play Store Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Google Play Results | 1 | 1 credit per row. App rows and review rows cost the same. |
Turn off `collect_reviews` to collect app listings only (one row per app). With `collect_reviews` on (the default), a popular app can add thousands of review rows.
# Get Results
Source: https://docs.lobstr.io/examples/google-play-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Google Play Store Scraper
Retrieve scraped data from your **Google Play Store Scraper** runs. Two row types share the same table: `record_type = "app"` for app listings, `record_type = "review"` for their reviews. Fields marked "App rows only" or "Review rows only" are left empty on the other type.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`.
## Query Parameters
Hash of the squid to get results from.
Page number (default: 1).
## Result Fields
### Common
Type of row: `app` for an app listing, `review` for one of its reviews.
Identifier of the row: the package id on an app row, the review id on a review row.
The task input that produced this row (app URL, package id, search URL or keyword).
Android package id of the app this row belongs to. Example: `com.whatsapp`
Google Play URL of the app this row belongs to.
Title of the app this row belongs to, filled on review rows as well. Example: `WhatsApp Messenger`
### App rows
Title of the app. App rows only.
Name of the developer publishing the app.
Google Play developer id, usable as `https://play.google.com/store/apps/dev?id=`.
Developer website declared on the listing.
Support email declared by the developer.
Postal address declared by the developer.
Primary Google Play category of the app. Example: `Communication`
Google Play identifier of the primary category. Example: `COMMUNICATION`
Price of the app in the selected storefront, 0 when the app is free.
Currency the price is expressed in.
True when the app costs nothing to install.
Price range of the in-app purchases the app offers, empty when it offers none. Example: `$0.99 - $49.99 per item`
Install count as displayed on the listing. Example: `10,000,000,000+`
Lower bound of the displayed install count, as a number.
Precise install count Google Play carries in the page payload.
Average rating of the app, empty when the app has no rating yet.
Number of star ratings the app received.
Number of written reviews the app received, always smaller than `ratings_count`.
Number of ratings per star level, from 1 to 5.
Full store description of the app, as plain text.
Short tagline shown under the app title.
Current version of the app. Google Play leaves it empty for apps that publish device-specific builds; the version of the most recent review is used when available.
Minimum Android version the app requires (`8.0`, `7.0`, `6.0`...). Empty for apps that ship device-specific builds.
Date the app was last updated on Google Play (UTC).
Date the app was first released on Google Play (UTC).
Content rating of the app, e.g. `Everyone`, `Teen`, `Mature 17+`.
Reason given for the content rating, e.g. `Users Interact`.
Screenshot URLs published on the listing, in display order.
App icon URL.
Feature graphic shown at the top of the listing.
Privacy policy URL declared by the developer.
Promo video published on the listing, empty when the app has none.
Thumbnail of the promo video.
True when Google Play shows the "Contains ads" badge on the listing.
Changelog of the latest update, as plain text.
Chart position of the app on Google Play when it is ranked. Example: `#1 top free communication`
### Review rows
Google Play identifier of the review.
Direct link to the review on the app listing.
Display name of the reviewer.
Google identifier of the reviewer.
Profile picture of the reviewer.
Star rating given by the reviewer, 1 to 5.
Body of the review.
Number of users who marked the review as helpful.
Date the review was posted (UTC).
Version of the app the reviewer had installed.
Reply the developer posted to the review, empty when there is none.
Date the developer replied (UTC).
Sub-ratings the reviewer gave on the app's own criteria, mostly on games. Empty on most reviews.
## Code Examples
```bash cURL theme={null}
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=YOUR_SQUID_HASH" \
-d "page=1"
```
```python Python theme={null}
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "YOUR_SQUID_HASH", "page": 1},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"record_type": "review", "record_id": "d40bb75a-d1a5-44b3-863d-c8624445efe9", "source_url": "https://play.google.com/store/apps/details?id=com.whatsapp", "package_id": "com.whatsapp", "app_title": "WhatsApp Messenger", "author": "Jonathan Spencer", "rating": 1, "text": "The most useless app I've encountered since the last update.", "thumbs_up": 5, "review_date": "2026-08-28 20:40:15", "app_version": "2.26.33.74"}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/google-play-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Google Play Store Scraper settings
Configure your **Google Play Store Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| country | string | `us` | The Play Store country to read from. Changes price, currency and availability on app rows, and which reviews Google Play serves. Use `language` to pick the review language. |
| language | string | `en` | The language of the reviews you get, and of the app description. |
| sort | string | `helpfulness` | Order the reviews are collected in. One of: `helpfulness`, `newest`, `rating`. `helpfulness` is Google Play's Most Relevant ranking. Only applies when Collect Reviews is on; ignored while Newer than is set (which always collects newest first). |
| rating\_filter | string | `all` | Only collect reviews with this star rating. One of: `all`, `1`, `2`, `3`, `4`, `5`. Google Play applies the filter itself, so filtered-out reviews are never fetched. Only applies when Collect Reviews is on. |
| collect\_reviews | boolean | true | Collect each app's reviews as well as its listing, one row per review. A review row costs one credit, the same as an app row. Turn this off to collect app listings only. |
| fetch\_since | string | — | Only collect reviews posted after this point. Use a relative duration (`24h`, `7d`, `2w`) or an absolute date (`YYYY-MM-DD HH:MM:SS`). Google Play publishes reviews about a day late, so a window shorter than a day usually returns none. App rows are always included. Only applies when Collect Reviews is on. |
| fetch\_since\_timezone | string | — | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Ignored for relative values. |
| max\_results | integer | — | Maximum number of rows collected per input, app rows and review rows counted together. Leave empty to collect everything available. |
| max\_unique\_results\_per\_run | integer | — | Maximum number of unique rows retrieved across all inputs in the entire run. Leave empty for unlimited. |
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"country": "us",
"language": "en",
"sort": "newest",
"rating_filter": "1",
"collect_reviews": true,
"fetch_since": "7d",
"max_results": 500
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"country": "us",
"language": "en",
"sort": "newest",
"rating_filter": "1",
"collect_reviews": True,
"fetch_since": "7d",
"max_results": 500,
},
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"country": "us", "language": "en", "sort": "newest", "rating_filter": "1", "collect_reviews": true, "fetch_since": "7d", "max_results": 500}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/google-search-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add keyword-based search tasks to scrape Google Search results
Add keyword-based tasks to scrape Google Search results. Each task represents a search query that will be executed on Google.
Crawler ID: `f588385d11c48f8af51560e561077238`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the google-search-scraper crawler |
| **tasks** | array | Yes | Array of task objects, each containing a `keyword` field |
## Task Object
| Field | Type | Required | Description |
| - | - | - | - |
| **keyword** | string | Yes | The search query to execute on Google |
You can add multiple keywords in a single request for bulk searches.
Configure search parameters like country, language, and max\_pages in the squid settings.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tasks": [
{"keyword": "crab"},
{"keyword": "lobster recipes"}
],
"squid": "YOUR_SQUID_HASH"
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Add keyword-based tasks
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"squid": squid_id,
"tasks": [
{"keyword": "crab"},
{"keyword": "lobster recipes"}
]
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
for task in data["tasks"]:
print(f" {task['id']}: {task['params']['keyword']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "36a5f24a550f89c2b997107ca043ec8a",
"created_at": "2025-06-30T08:25:29.311114",
"is_active": true,
"params": {
"keyword": "crab"
},
"module": 128,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/google-search-scraper/credit-cost
Credit cost for the Google Search Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Results | 1 | 1 credit per organic result row. |
| Collect Shopping Results | 1 | 1 extra credit per shopping result (first page, up to 40 products) when `collect_shopping_results` is enabled. Off by default. |
# Get Geolocation
Source: https://docs.lobstr.io/examples/google-search-scraper/get-geolocation
GET https://api.lobstr.io/v1/googlelocations
Fetch valid location values for geographic search bias
Use this endpoint to fetch valid location values for the `params.location` setting in the Google Search Scraper. These values provide geographic bias for your search queries.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Search substring for location names. Example: `Alabama`
Full country name. Example: `United States`
## Query Parameters
| Parameter | Required | Description |
| - | - | - |
| **q** | Yes | Substring to search for in region, district, or city names |
| **country\_name** | Yes | Full country name to scope the search (e.g., `United States`) |
## Response Fields
| Field | Type | Description |
| - | - | - |
| **name** | string | Display name of the location (region, district, or city) |
| **canonical\_name** | string | Full hierarchical name (e.g., `Alabama,United States`) |
| **country\_name** | string | Country associated with this location |
| **country\_code** | string | ISO 2-letter country code (e.g., `US`) |
Use the returned `name` value as your `params.location` setting.
Location values provide geographic bias - search results will be relevant to that area.
## Code Examples
```bash cURL theme={null}
curl -X GET "https://api.lobstr.io/v1/googlelocations?q=Alabama&country_name=United%20States" \
-H "Authorization: Token YOUR_API_KEY"
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
# Search for locations containing "Alabama" in United States
response = requests.get(f"{BASE_URL}/googlelocations",
headers=headers,
params={
"q": "Alabama",
"country_name": "United States"
}
)
data = response.json()
print(f"Found {len(data['data'])} locations")
for location in data["data"][:5]:
print(f" {location['name']} ({location['country_code']})")
```
## Response
```json 200 theme={null}
{
"success": true,
"data": [
{
"name": "Alabama",
"canonical_name": "Alabama,United States",
"country_name": "United States",
"country_code": "US"
},
{
"name": "Alabama's 1st Congressional District 2022 redistricting",
"canonical_name": "Alabama's 1st Congressional District 2022 redistricting,Alabama,United States",
"country_name": "United States",
"country_code": "US"
},
{
"name": "The University of Alabama",
"canonical_name": "The University of Alabama,Alabama,United States",
"country_name": "United States",
"country_code": "US"
},
{
"name": "University of Alabama at Birmingham",
"canonical_name": "University of Alabama at Birmingham,Alabama,United States",
"country_name": "United States",
"country_code": "US"
}
]
}
```
# Get Results
Source: https://docs.lobstr.io/examples/google-search-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Google Search Scraper
Retrieve scraped data from your **Google Search Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Title of the search result page. Example: `Coffee`
URL of the search result. Example: `https://en.wikipedia.org/wiki/Coffee`
URL as displayed in the Google search result (may differ from actual URL). Example: `https://en.wikipedia.org › wiki › Coffee`
Meta description or snippet shown in the Google search result. Example: `Coffee is a beverage brewed from roasted, ground coffee beans. Darkly colored, bitter, and slightly acidic, coffee has a stimulating effect on humans, primarily ...`
Individual text segments of the Google search snippet
Question text from a People Also Ask entry. Example: `What is the 15-15-15 coffee rule?`
Answer text from a People Also Ask entry
Whether this result is a People Also Ask (Q\&A) entry. Example: `false`
Whether this result is a related search query suggestion. Example: `false`
Whether this is an unpaid organic search result. Example: `true`
Whether this is a paid advertisement in Google search results. Example: `false`
Total number of search results Google reports for the query. Example: `3190000000`
Publication or indexing date shown in the Google search result
Keywords Google highlights in the search snippet. Example: `coffee`
Search results page number (1 = first page of results). Example: `1`
### Collect Shopping Results
`true` on a shopping row, `false` on an organic row. Only populated when `collect_shopping_results` is on.
Shopping seller / merchant name. Only populated on shopping rows. Example: `Amazon.com`
Shopping price as shown by Google (with currency symbol). Only populated on shopping rows. Example: `$29.99`
Shopping price as a number. Only populated on shopping rows. Example: `29.99`
Shopping price currency code. Only populated on shopping rows. Example: `USD`
Shopping product rating out of 5. Only populated on shopping rows when Google shows one. Example: `4.5`
Shopping product rating count. Only populated on shopping rows when Google shows one. Example: `2314`
Shopping product image URL. Only populated on shopping rows.
Google's own identifier for the shopping product. Only populated on shopping rows.
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 77331,
"object": "result",
"squid": "f6bcb5d88a53ddd90e0ea0944f0433ae",
"run": "bbdefdfc8d2f9c05bcbdd805c24c6cf6",
"title": "Coffee",
"url": "https://en.wikipedia.org/wiki/Coffee",
"displayed_url": "https://en.wikipedia.org › wiki › Coffee",
"description": "Coffee is a beverage brewed from roasted, ground coffee beans. Darkly colored, bitter, and slightly acidic, coffee has a stimulating effect on humans, primarily ...",
"snippet_segments": null,
"question": "What is the 15-15-15 coffee rule?",
"answer": null,
"is_question_answer": false,
"is_related_query": false,
"is_organic": true,
"is_paid": false,
"total_results": "3190000000",
"date": null,
"emphasized_keywords": "coffee",
"page": 1,
"functions": null,
"native_id": 77331
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/google-search-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Google Search Scraper parameters
Configure the scraper parameters to control how Google Search results are collected. These settings include pagination, location and language.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Description |
| - | - | - |
| **max\_pages** | integer | Maximum search result pages to crawl per keyword. Google limits to \~300-400 total results. The scraper always requests 10 results per page and paginates. |
| **max\_unique\_results\_per\_run** | integer | Maximum number of unique results retrieved across all tasks in the entire run. Leave empty for unlimited. |
| **country** | string | Sets IP origin country and Google domain (e.g., `google.fr` for France). Default: `United States` |
| **location** | string | Geographic bias for results (state, city). Use Get Geolocation to find valid values. |
| **language** | string | Language for search results. Defaults to English for the chosen country. |
| **collect\_shopping\_results** | boolean | Also collect the Google Shopping results for each keyword (first page, up to 40 products): seller, price, rating, reviews and image. Uses the same country, language and location as the search. Billed at 1 credit per shopping result. Default: `false` |
Use the Get Geolocation endpoint to discover valid `location` values.
Higher `max_pages` values will collect more results but use more credits.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Google Search Scraper",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"country": "United States",
"language": "English",
"max_pages": 4,
"max_unique_results_per_run": 500,
"location": "Alabama",
"collect_shopping_results": false
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Update scraper settings
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Google Search Scraper",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"country": "United States",
"language": "English",
"max_pages": 4,
"max_unique_results_per_run": 500,
"location": "Alabama",
"collect_shopping_results": False
}
}
)
data = response.json()
print(f"Updated: {data['name']}")
print(f"Max pages: {data['params']['max_pages']}")
print(f"Location: {data['params']['location']}")
```
## Response
```json 201 theme={null}
{
"name": "Google Search Scraper",
"no_line_breaks": true,
"params": {
"country": "United States",
"language": "English",
"max_pages": 4,
"max_unique_results_per_run": 500,
"location": "Alabama",
"collect_shopping_results": false
},
"to_complete": false,
"export_unique_results": true
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/idealista-listings-search-export/add-tasks
POST https://api.lobstr.io/v1/tasks
Add Idealista search URLs as tasks for scraping property listings
Add Idealista search URLs to your squid for scraping Spanish property listings. The scraper extracts real estate listings including price, area, bedrooms, contact information, and listing details from Idealista.com search results.
Crawler ID: `5f4b269e29e601e09fa50f4155b3970e`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Task Format
Each task should contain a URL from an Idealista search results page. You can search for properties by location, type, and other filters on Idealista, then use those search URLs as tasks.
## Supported URL Formats
The scraper supports Idealista search URLs from various property categories:
Apply filters on Idealista (price range, property type, number of bedrooms) before copying the URL to get more targeted results.
Idealista uses different language subdomains. The scraper works with /en/ (English), /es/ (Spanish), and other language versions.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{
"url": "https://www.idealista.com/en/venta-viviendas/vizcaya/"
}
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Add Idealista search URLs as tasks
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"squid": squid_id,
"tasks": [
{"url": "https://www.idealista.com/en/venta-viviendas/vizcaya/"},
{"url": "https://www.idealista.com/en/venta-viviendas/madrid/"}
]
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates skipped: {data['duplicated_count']}")
for task in data["tasks"]:
print(f" Task ID: {task['id']}")
print(f" URL: {task['params']['url']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "82367f24d9450b2222080eed91662968",
"created_at": "2025-07-17T09:06:47.287893",
"is_active": true,
"params": {
"url": "https://www.idealista.com/en/venta-viviendas/vizcaya/"
},
"module": 115,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/idealista-listings-search-export/credit-cost
Credit cost for the Idealista Listings Search Export
0.1 credit per listing.
# Get Results
Source: https://docs.lobstr.io/examples/idealista-listings-search-export/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Idealista Listings Search Export
Retrieve scraped data from your **Idealista Listings Search Export** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Direct URL to the listing on Idealista. Example: `https://www.idealista.com/en/inmueble/106993032/`
Title of the property listing on Idealista. Example: `Flat / apartment for sale in Galleteras Nn, La Ribera-Ibarrekolanda, Bilbao`
Listed price of the property. Example: `526000`
ISO 3-letter currency code of the listed price. Example: `EUR`
Number of bedrooms in the property. Example: `2`
Living surface area of the property in square metres. Example: `99`
Floor level where the property is located. Example: `1st floor exterior with lift`
Full description text provided by the seller or agency on Idealista. Example: `A little piece of nature in the heart of Bilbao. Ubide Barri is the new development by Loiola, located in the most sought-after enclave of Zorrotzaurre Island: on the first line of the Deusto estuary, surrounded by parks and with the best connections to the city.`
Contact phone number for the listing. Example: `+34843750610`
URL of the property's main listing image on Idealista. Example: `https://img4.idealista.com/blur/WEB_DETAIL/0/id.pro.es.image.master/00/63/2d/1326662095.jpg`
Whether the listing includes a garage or parking space. Example: `true`
Whether the garage or parking space is included in the listed price. Example: `true`
Extra price of the parking space when not included in the listed price. `null` if included or not applicable. Example: `15000`
### Detail Fields
The following fields are populated only when `get_property_details: true` is set. They require an additional page visit per listing.
Year of construction of the property. Example: `1985`
Orientation of the property (e.g. north, south, east, west or combinations). Example: `south, east`
Heating type and energy source as displayed on the listing. Example: `individual gas`
Interior condition of the property (e.g. second hand/good condition, to renovate). Example: `second hand/good condition`
Energy certificate consumption rating letter (A–G). Example: `C`
Energy consumption in kWh/m² per year from the energy performance certificate. Example: `142.5`
Energy certificate emissions rating letter (A–G). Example: `D`
CO₂ emissions in kg CO₂/m² per year from the energy performance certificate. Example: `28.3`
Monthly community / homeowner association costs in the listing currency. Example: `85.0`
Constructed area in square metres. Example: `115`
Usable interior area in square metres. Example: `99.0`
Plot or land size in square metres (houses). Example: `300`
Furnishing status of the property (rental listings). Example: `furnished`
Whether the property has fitted wardrobes. Example: `true`
House sub-type for chalets (e.g. independantHouse, semidetachedHouse, terracedHouse). Example: `independantHouse`
Whether the property is a duplex. Example: `false`
Whether the property is on the top floor. Example: `false`
Whether the property is sold at auction. Example: `false`
Whether the advertiser is a bank (bank-owned property). Example: `false`
Number of floors of the building or house. Example: `6`
Full raw characteristics of the listing grouped by section, as returned by Idealista's detail page. Example: `{"Basics": {"Bedrooms": "2", "Floor": "3rd"}, ...}`
Last modification date of the listing as returned by the detail page (UTC). Example: `2026-08-20T12:00:00Z`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 38127,
"object": "result",
"squid": "YOUR_SQUID_HASH",
"run": "RUN_HASH",
"url": "https://www.idealista.com/en/inmueble/106993032/",
"title": "Flat / apartment for sale in Galleteras Nn, La Ribera-Ibarrekolanda, Bilbao",
"price": 526000,
"currency": "EUR",
"bedrooms": 2,
"area": 99,
"floor": "1st floor exterior with lift",
"description": "A little piece of nature in the heart of Bilbao. Ubide Barri is the new development by Loiola, located in the most sought-after enclave of Zorrotzaurre Island: on the first line of the Deusto estuary, surrounded by parks and with the best connections to the city.",
"phone": "+34843750610",
"main_image": "https://img4.idealista.com/blur/WEB_DETAIL/0/id.pro.es.image.master/00/63/2d/1326662095.jpg",
"scraping_time": "2026-03-20T09:15:00.000Z",
"functions": null,
"native_id": 38127
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/idealista-listings-search-export/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Idealista Listings Scraper parameters and options
Configure your Idealista Listings Scraper squid settings to control pagination and scraping behavior. Adjust the maximum pages to scrape based on your needs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Squid Parameters
The following parameters can be configured in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_pages** | integer | 60 | Maximum number of search result pages to scrape (max: 100) |
| **get\_property\_details** | boolean | false | Visit each listing page to collect full property characteristics (year built, orientation, energy certificate, community costs, etc.). Increases credit usage. |
## General Settings
Standard squid settings that apply to all scrapers:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Idealista typically shows 30 listings per page. Setting max\_pages to 60 can yield up to 1,800 listings per search URL.
Keep concurrency at 1 for Idealista to avoid rate limiting issues.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Idealista Iter Listings (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_pages": 60,
"get_property_details": false
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Configure scraper settings
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Idealista Iter Listings (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_pages": 60,
"get_property_details": False
}
}
)
data = response.json()
print(f"Squid updated: {data['name']}")
print(f"Max pages: {data['params']['max_pages']}")
```
## Response
```json 201 theme={null}
{
"name": "Idealista Iter Listings (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_pages": 60,
"get_property_details": false
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/immoweb-listings-phone-search-export/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Immoweb Listings & Phones Search Export squid
Add URLs or inputs to your **Immoweb Listings & Phones Search Export** squid. Each task object must include the required fields below.
Crawler ID: `9bca6a0a4cc5237b37798f8640dce087`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task supports the fields below.
## Task Fields
# Credit Cost
Source: https://docs.lobstr.io/examples/immoweb-listings-phone-search-export/credit-cost
Credit cost for the Immoweb Listings & Phones Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Listings | 1 | 1 credit per listing. |
| Get Listing Details | 4 | 4 credits per listing. |
# Get Results
Source: https://docs.lobstr.io/examples/immoweb-listings-phone-search-export/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Immoweb Listings & Phones Search Export
Retrieve scraped data from your **Immoweb Listings & Phones Search Export** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique identifier for the listing on Immoweb. Example: `10181065`
Direct URL to the listing on Immoweb. Example: `https://www.immoweb.be/fr/annonce/10181065`
Property type (e.g. APARTMENT, HOUSE). Example: `APARTMENT`
Title of the listing. Example: `Appartement 2 chambres`
Number of bedrooms. Example: `2`
Locality/city of the property. Example: `Evere`
Postal code of the property location. Example: `1140`
Street name of the property. Example: `Rue Edouard Dekoster`
Street number of the property. Example: `64`
Box/unit number. Example: `40`
Floor level of the property. Example: `1`
Latitude coordinate of the property. Example: `50.8782927`
Longitude coordinate of the property. Example: `4.4040975`
Habitable surface area in square meters. Example: `70`
Land surface area in square meters. Example: `0`
Type of price (e.g. residential\_sale, residential\_rent). Example: `residential_sale`
Listed price of the property. Example: `200000`
Number of bathrooms. Example: `1`
Date the listing was created on Immoweb. Example: `2022-10-19`
Date the listing expires on Immoweb. Example: `2023-02-27`
Date the listing was last modified. Example: `2022-10-19`
Type of agency (e.g. AGENCY, OWNER). Example: `AGENCY`
Email address of the agency. Example: `contact@agency.be`
Phone number of the agency. Example: `+32 2 123 45 67`
Mobile phone number of the agency. Example: `+32 478 15 73 6`
Name of the agency. Example: `OM-IMMO SPRL`
Full property description text. Example: `Magnifique appartement lumineux...`
URL of the main listing picture. Example: `https://media-resize.immowebstatic.be/classifieds/.../736x736/image.jpg`
Comma-separated list of all picture URLs. Example: `https://media-resize.immowebstatic.be/classifieds/.../736x736/img1.jpg, https://...`
Transaction type (FOR\_SALE, FOR\_RENT). Example: `FOR_SALE`
Country of the property. Example: `Belgique`
Region of the property. Example: `Bruxelles`
Province of the property. Example: `Bruxelles`
Building condition (AS\_NEW, GOOD, TO\_RENOVATE, etc.). Example: `AS_NEW`
Number of facades. Example: `2`
Number of floors in the building. Example: `6`
Year the building was constructed. Example: `1950`
Whether the building has an elevator. Example: `true`
Whether the property has a terrace. Example: `true`
Terrace surface area in square meters. Example: `15`
Whether the property has a garden. Example: `false`
Garden surface area in square meters. Example: `100`
Energy Performance Certificate score. Example: `C`
Heating type (GAS, ELECTRIC, OIL, etc.). Example: `GAS`
Whether the property is furnished. Example: `false`
External reference number from the agency. Example: `REF-12345`
Property subtype (e.g. STUDIO, DUPLEX, PENTHOUSE). Example: `APARTMENT`
Total number of rooms. Example: `4`
Sale availability status (e.g. AVAILABLE, SOLD\_OUT). Example: `AVAILABLE`
Price per square meter. Example: `2857.14`
Previous listed price, if reduced. Example: `220000`
Total number of listing photos. Example: `12`
Sub-unit breakdown for new-build projects. Each entry describes one apartment unit within the project. `null` for individual listings.
Name of the new-build project, if applicable. Example: `Résidence Les Érables`
Percentage of units already sold in a new-build project. Example: `65.0`
CO₂ emission rating in kg CO₂/sqm/year. Example: `18.5`
Primary energy consumption in kWh/sqm/year. Example: `142.0`
Whether the property has a heat pump. Example: `false`
Whether the property has solar (PV) panels. Example: `false`
Whether the property has double-glazed windows. Example: `true`
Whether an asbestos certificate is present. Example: `false`
Whether the electrical installation has a compliance certificate. Example: `true`
Whether a valid flood-risk certificate is present. Example: `true`
Status of the oil-tank certificate, if applicable. Example: `COMPLIANT`
Kitchen type (e.g. INSTALLED, SEMI\_EQUIPPED, NOT\_INSTALLED). Example: `INSTALLED`
Number of separate toilets. Example: `1`
Number of shower rooms (separate from bathrooms). Example: `0`
Number of indoor parking spaces included. Example: `1`
Number of outdoor parking spaces included. Example: `0`
Monthly co-ownership charges in the listing currency. Example: `150`
List of amenity strings reported on the listing. Example: `["BARBECUE", "BIKE_STORAGE"]`
Whether the property has a swimming pool. Example: `false`
Whether the property has air conditioning. Example: `false`
Whether the property has disabled-access provisions. Example: `false`
Whether internet access is included. Example: `false`
Whether the property has an alarm system. Example: `false`
Number of times the listing has been viewed on Immoweb. Example: `847`
Number of times the listing has been saved/bookmarked. Example: `23`
Website URL of the agency. Example: `https://www.agencyname.be`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 34737,
"object": "result",
"squid": "87559da1c8f64d80b00b6e86ff597b60",
"run": "fad94d6642ac9f41ea9c6762e5d77a6d",
"internal_id": 10181065,
"url": "https://www.immoweb.be/fr/annonce/10181065",
"type": "APARTMENT",
"title": "Appartement 2 chambres",
"bedroom_count": 2,
"locality": "Evere",
"postal_code": 1140,
"street": "Rue Edouard Dekoster",
"number": "64",
"box": "40",
"floor": 1,
"lat": 50.8782927,
"lng": 4.4040975,
"habitable_surface": 70,
"land_surface": 0,
"price_type": "residential_sale",
"price": 200000,
"bathroom_count": 1,
"creation_date": "2022-10-19",
"expiration_date": "2023-02-27",
"last_modification_date": "2022-10-19",
"agency_type": "AGENCY",
"agency_email": "contact@agency.be",
"agency_phone": "+32 2 123 45 67",
"agency_mobile": "+32 478 15 73 6",
"agency_name": "OM-IMMO SPRL",
"description": "Magnifique appartement lumineux...",
"picture": "https://media-resize.immowebstatic.be/classifieds/.../736x736/image.jpg",
"pictures": "https://media-resize.immowebstatic.be/classifieds/.../736x736/img1.jpg, https://...",
"transaction_type": "FOR_SALE",
"country": "Belgique",
"region": "Bruxelles",
"province": "Bruxelles",
"building_condition": "AS_NEW",
"facade_count": 2,
"floor_count": 6,
"construction_year": 1950,
"has_lift": true,
"has_terrace": true,
"terrace_surface": 15,
"has_garden": false,
"garden_surface": 100,
"epc_score": "C",
"heating_type": "GAS",
"is_furnished": false,
"external_reference": "REF-12345",
"subtype": "APARTMENT",
"room_count": 4,
"sale_status": "available",
"price_per_sqm": 3200,
"old_price": 210000,
"picture_count": 13,
"units": [
{
"id": 21781288,
"price": 299000,
"surface": 72,
"bedroom_count": 1,
"floor": 2,
"sale_status": "AVAILABLE"
}
],
"project_name": "ALBA",
"project_sold_percentage": 40,
"carbon_emission": 56,
"primary_energy_consumption": 20634,
"has_heat_pump": false,
"has_photovoltaic_panels": true,
"has_double_glazing": true,
"has_asbestos_certificate": false,
"has_electrical_compliance": true,
"has_valid_flood_certificate": true,
"oil_tank_certificate_status": "GREEN",
"kitchen_type": "SEMI_EQUIPPED",
"toilet_count": 1,
"shower_room_count": 1,
"parking_count_indoor": 1,
"parking_count_outdoor": 0,
"monthly_costs": 75,
"amenities": {
"lift": true,
"terrace": true,
"swimming_pool": false
},
"has_swimming_pool": false,
"has_air_conditioning": false,
"has_disabled_access": false,
"has_internet": true,
"has_alarm": false,
"view_count": 128,
"bookmark_count": 4,
"agency_website": "http://www.agency.be",
"functions": null,
"native_id": 34737
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/immoweb-listings-phone-search-export/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Immoweb Listings & Phone Search Export scraper settings
Configure your Immoweb Listings & Phone Search Export squid settings. Control pagination, result limits, and whether to fetch full listing details including phone numbers.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_pages** | integer | unlimited | Maximum number of search result pages to scrape |
| **max\_results** | integer | unlimited | Maximum number of listings to collect per task |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the run |
## Optional Functions
Enable these in the `params.functions` object:
| Function | Type | Default | Description |
| - | - | - | - |
| **get\_listing\_details** | boolean | true | Visit each listing's detail page to fetch full description, phone number, and additional attributes (4 credits per listing) |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
`get_listing_details` is enabled by default and costs 4 additional credits per listing. Disable it if you only need listing summaries.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Immoweb Listings & Phone (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_pages": 10,
"max_results": 200,
"functions": {
"get_listing_details": true
}
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Immoweb Listings & Phone (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_pages": 10,
"max_results": 200,
"functions": {
"get_listing_details": True # 4 credits per listing
}
}
}
)
data = response.json()
print(f"Settings updated: {data['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Immoweb Listings & Phone (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_pages": 10,
"max_results": 200,
"functions": {
"get_listing_details": true
}
}
}
```
# Examples
Source: https://docs.lobstr.io/examples/index
Ready-to-use code examples for every scraper on lobstr.io
Browse all available scrapers by platform below.
## Amazon
Export reviews for any Amazon product
## AutoScout24
Export car listings from AutoScout24
## Bien'Ici
Scrape property listings from Bien'Ici
## Capterra
Export every review of a Capterra product — pros/cons, ratings, reviewer profile, vendor replies
## Contact
Extract emails, phones, and social profiles from any website
## Crunchbase
Export company profiles from Crunchbase — description, funding, industries, contacts, no account needed
## Facebook
Export ads from the Meta Ad Library by keyword or advertiser
Search and export Facebook pages by keyword
Extract business info from Facebook business pages
Scrape comments from any Facebook post, photo, video or reel
Export posts from Facebook groups
Scrape posts from private Facebook groups you have access to
Scrape Facebook Marketplace listings by search URL
## Glassdoor
Export job listings from Glassdoor with salary estimates and company ratings
## Google
Scrape reviews for any Google Maps listing
Extract business leads from Google Maps search results
Collect organic search results for any query
Export news articles from Google News search
Export any Play Store app listing and its reviews from an app URL, package id or keyword
## Idealista
Scrape property listings from Idealista
## Immoweb
Export listings with phone numbers from Immoweb
## Instagram
Scrape public Instagram profile data
Export posts from any Instagram account
Collect reels data from Instagram accounts
Collect comments from any public Instagram post or reel, no account needed
Export every follower of a public Instagram account
Collect posts and reels from Instagram hashtags and keyword searches
## LaCentrale
Scrape car listings from LaCentrale
Check if LaCentrale listings are still active or deactivated
## Leboncoin
Scrape store directories from Leboncoin Boutiques
Export listings from Leboncoin search results
Scrape a single Leboncoin listing page
Export Leboncoin listings including phone numbers
Check if Leboncoin listings are still active
Automatically send messages to Leboncoin sellers
Read the replies in your Leboncoin inbox, one row per message, joinable to Auto Message Sender by annonce\_id
## LinkedIn
Scrape company pages from LinkedIn without a LinkedIn account
Export employees from any LinkedIn company page
Export job postings with full description, salary, recruiter and company details
Scrape LinkedIn profiles and find emails without a LinkedIn account
Scrape public LinkedIn profile data
Export leads from LinkedIn search results
Scrape posts from any LinkedIn profile or company page
Get everyone who engaged with a LinkedIn post
Export LinkedIn people, company and post search results from a search URL, using your synced LinkedIn account
## Pinterest
Export pins from a Pinterest keyword, search URL, board, profile or single pin, no account needed
## ParuVendu
Scrape car and real estate listings from ParuVendu
## Naukri
Export job listings from Naukri, India's largest job portal
## Pages Jaunes
Export company listings from Pages Jaunes
## PAP
Export apartment listings from PAP
## Quora
Scrape answers, posts, profiles, and topics from Quora
## Sales Navigator
Export leads from LinkedIn Sales Navigator
Scrape company data from Sales Navigator
Extract profile data from Sales Navigator
## Realtor
Export property listings from Realtor.com search results
## Reddit
Scrape posts, comments, user profiles, and subreddits from Reddit
## SeLoger
Export property listings from SeLoger
## Similarweb
Export the full Similarweb profile of any domain or ranking — traffic, ranks, keywords, competitors, AI referral traffic
## Threads
Scrape posts, profiles, and keyword searches from Threads
## TikTok
Export video details, stats, and author info for any TikTok video
Export all videos and profile data from any TikTok account
Export top-performing ads from TikTok's ad library
Scrape comments from any TikTok video
Export every video published under a TikTok hashtag
## TripAdvisor
Export restaurant listings from TripAdvisor
One row per restaurant with city ranking, Travelers' Choice and MICHELIN awards, sub-ratings and contacts
Scrape reviews from any TripAdvisor listing
## Trustpilot
Scrape reviews from any Trustpilot company page
## Upwork
Export job listings from Upwork search results
## Twitter
Scrape public profile data from Twitter/X users
Export tweets matching any search query
Collect all tweets from a specific user
Export followers or following lists for any account
## Vinted
Scrape product listings from Vinted
## Yellow Pages
Export business listings from Yellow Pages search results
## Yelp
Export business listings from Yelp search
Export all reviews from any Yelp business page
## YouTube
Extract contact emails from YouTube channel pages
Scrape comments and replies from any YouTube video
Search YouTube, or export a video, channel, playlist or hashtag
Download captions and transcripts from any YouTube video, playlist, or channel
## Zillow
Export property listings from Zillow search results
# Add Tasks
Source: https://docs.lobstr.io/examples/instagram-comments-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Instagram Comments Scraper squid
Add URLs or inputs to your **Instagram Comments Scraper** squid.
Crawler ID: `a442c64e1d6b3e3503f81dd5e26c3f01`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
Instagram Post or Reel URL to collect comments from. Example: `https://www.instagram.com/p/DDIJAfeyemG/`
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.instagram.com/p/DDIJAfeyemG/"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.instagram.com/p/DDIJAfeyemG/"}
],
},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.instagram.com/p/DDIJAfeyemG/"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/instagram-comments-scraper/credit-cost
Credit cost for the Instagram Comments Scraper
1 credit per comment. Replies collected with `include_child_comments` are charged the same as top-level comments.
# Get Results
Source: https://docs.lobstr.io/examples/instagram-comments-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Instagram Comments Scraper
Retrieve scraped data from your **Instagram Comments Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`.
## Query Parameters
Hash of the squid to get results from.
Page number (default: 1).
## Result Fields
Unique identifier for the Instagram comment. Example: `18397500988178795`
Direct URL to the comment on Instagram. Example: `https://www.instagram.com/p/DDIJAfeyemG/c/18397500988178795`
URL of the Instagram post this comment belongs to. Example: `https://www.instagram.com/reel/DDIJAfeyemG`
Full text content of the comment. Example: `I LOVE INSTAGRAM #instagram`
Details of a Giphy GIF or sticker attached to the comment.
Instagram username of the comment author. Example: `mohsinjamindar07`
Unique Instagram identifier of the comment author. Example: `40564582835`
URL of the comment author's Instagram profile picture. Example: `https://scontent.cdninstagram.com/v/t51.2885-19/x.jpg`
Whether the comment author has a verified badge on Instagram. Example: `False`
Timestamp of when the comment was posted. Example: `2026-02-15T06:27:58.000Z`
Number of likes the comment received. Example: `0`
Number of replies to this comment. Example: `0`
URL of the comment author's Instagram profile. Example: `https://instagram.com/sai_jonov`
Whether this is a reply to another comment (nested comment). Example: `False`
Unique identifier of the parent comment this is a reply to.
Username of the account that posted the post or reel. Example: `cristiano`
Instagram id of the account that posted the post or reel. Example: `173560420`
Display name of the account that posted the post or reel. Example: `Cristiano Ronaldo`
Whether the account that posted has a verified badge. Example: `True`
Whether the comment was edited after posting. Example: `False`
## Code Examples
```bash cURL theme={null}
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=YOUR_SQUID_HASH" \
-d "page=1"
```
```python Python theme={null}
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "YOUR_SQUID_HASH", "page": 1},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"comment_id": "18397500988178795", "comment_url": "https://www.instagram.com/p/DDIJAfeyemG/c/18397500988178795", "post_url": "https://www.instagram.com/reel/DDIJAfeyemG", "text": "I LOVE INSTAGRAM #instagram", "giphy_media_info": null, "owner_username": "mohsinjamindar07", "owner_id": "40564582835", "owner_profile_pic_url": "https://scontent.cdninstagram.com/v/t51.2885-19/x.jpg", "owner_is_verified": false, "timestamp": "2026-02-15T06:27:58.000Z"}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/instagram-comments-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Instagram Comments Scraper settings
Configure your **Instagram Comments Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| max\_unique\_results\_per\_run | int | — | Maximum number of unique results retrieved across all tasks in the entire run. Leave empty for unlimited. |
| max\_results | integer | — | Total comments the crawler will collect per post. |
| sort\_order | string | `recent` | Sort comments by most recent or most popular. `recent` paginates the full comment thread; `popular` returns only the top comments Instagram surfaces publicly. One of: `recent`, `popular`. |
| fetch\_since | fetch\_since | — | Stop scraping when comments older than this threshold are reached (based on `timestamp`). Use a relative duration (24h, 7d, 2w) or an absolute date (YYYY-MM-DD HH:MM:SS). If not provided, no time filtering is applied. |
| fetch\_since\_timezone | string | — | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Ignored for relative values. |
| include\_child\_comments | boolean | false | Also collect replies to comments. Each reply counts as a separate result. |
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sort_order": "popular",
"include_child_comments": true,
"max_results": 200
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"sort_order": "popular",
"include_child_comments": True,
"max_results": 200,
},
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"sort_order": "popular", "include_child_comments": true, "max_results": 200}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/instagram-followers-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Instagram Followers Scraper squid
Add URLs or inputs to your **Instagram Followers Scraper** squid.
Crawler ID: `5575499b33df1f165e72b29a12892a9e`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
Instagram Profile URL or Username to scrape followers from. Example: `https://www.instagram.com/leomessi/`
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.instagram.com/leomessi/"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.instagram.com/leomessi/"}
],
},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.instagram.com/leomessi/"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/instagram-followers-scraper/credit-cost
Credit cost for the Instagram Followers Scraper
1 credit per follower.
# Get Results
Source: https://docs.lobstr.io/examples/instagram-followers-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Instagram Followers Scraper
Retrieve scraped data from your **Instagram Followers Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`.
## Query Parameters
Hash of the squid to get results from.
Page number (default: 1).
## Result Fields
Direct URL to the follower's Instagram profile. Example: `https://www.instagram.com/kholiq__off/`
Instagram username of the follower. Example: `kholiq__off`
Display name of the follower. Example: `Abduxoliqjon`
URL of the follower's Instagram profile picture. Example: `https://instagram.ftas5-1.fna.fbcdn.net/v/t51.82787-19/658962059_18050684966719677_5091061884162648088_n.jpg`
Unique internal Instagram identifier (pk) for the follower account. Example: `51385255676`
Internal Facebook/Meta identifier linked to the follower account. Example: `17841451590283156`
Whether the follower's account is set to private. Example: `False`
Whether the follower's account has a verified badge on Instagram. Example: `False`
Whether the follower is using the default (anonymous) Instagram profile picture. Example: `False`
Unix timestamp of the follower's most recent story/reel media (0 if none). Example: `1776351955`
Whether the follower has third-party downloads enabled on their account. Example: `True`
Additional enrichment functions enabled for this record. Example: `{}`
## Code Examples
```bash cURL theme={null}
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=YOUR_SQUID_HASH" \
-d "page=1"
```
```python Python theme={null}
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "YOUR_SQUID_HASH", "page": 1},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"profile_url": "https://www.instagram.com/kholiq__off/", "username": "kholiq__off", "full_name": "Abduxoliqjon", "profile_pic_url": "https://instagram.ftas5-1.fna.fbcdn.net/v/t51.82787-19/658962059_18050684966719677_5091061884162648088_n.jpg", "profile_id": 51385255676, "fbid": 17841451590283156, "is_private": false, "is_verified": false, "has_anonymous_profile_picture": false, "latest_reel_media": 1776351955}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/instagram-followers-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Instagram Followers Scraper settings
Configure your **Instagram Followers Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| search | string | — | Optional search query to filter followers by name or username (matches Instagram's native follower-list search bar). Leave empty to scrape all followers. |
| max\_unique\_results\_per\_run | int | — | Maximum number of unique results retrieved across all tasks in the entire run. Leave empty for unlimited. |
| max\_results | integer | — | Total followers the crawler will collect during the run. |
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"max_results": 500,
"max_unique_results_per_run": 2000
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"max_results": 500,
"max_unique_results_per_run": 2000,
},
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"max_results": 500, "max_unique_results_per_run": 2000}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/instagram-hashtags-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Instagram Search & Hashtags Scraper squid
Add URLs or inputs to your **Instagram Search & Hashtags Scraper** squid.
Crawler ID: `84adfa9c253a9a481b2f093a81e019e2`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
Instagram hashtag or search keyword. Example: `https://www.instagram.com/explore/tags/travel`
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"squid": "YOUR_SQUID_HASH", "tasks": [{"url": "https://www.instagram.com/explore/tags/travel"}]}'
```
```python Python theme={null}
import requests
headers = {"Authorization": "Token YOUR_API_KEY", "Content-Type": "application/json"}
response = requests.post("https://api.lobstr.io/v1/tasks", headers=headers,
json={"squid": "YOUR_SQUID_HASH", "tasks": [{"url": "https://www.instagram.com/explore/tags/travel"}]})
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.instagram.com/explore/tags/travel"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/instagram-hashtags-scraper/credit-cost
Credit cost for the Instagram Search & Hashtags Scraper
1 credit per post or reel.
# Get Results
Source: https://docs.lobstr.io/examples/instagram-hashtags-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Instagram Search & Hashtags Scraper
Retrieve scraped data from your **Instagram Search & Hashtags Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Page number (default: 1)
## Result Fields
Canonical URL of the post or reel.
Direct reel URL (reels only).
Unique numeric identifier. Example: `3123456789`
Shortcode used in the Instagram URL. Example: `C1a2b3c4d`
The hashtag or keyword this item was discovered under. Example: `travel`
The Instagram hashtag/search page URL.
Position within results.
Type of media. Example: `image`
Whether the media is a video/reel.
Whether the media is a multi-slide carousel.
Full caption text.
Hashtags found in the caption.
@-mentions found in the caption.
Instagram username of the author. Example: `travel_blogger`
Display name of the author.
Unique Instagram identifier of the author.
Whether the author account is verified.
Profile picture URL of the author.
Number of likes. Example: `4821`
Number of comments. Example: `93`
Video play count (reels/videos only).
True when the author disabled like and view counts on the post.
Unix timestamp of publication.
Publication date and time (ISO 8601). Example: `2026-09-10T14:23:00`
URL of the main image or video thumbnail.
Direct video URL (videos/reels only).
Video duration in seconds.
Width x height of the media in pixels. Example: `1080x1350`
Number of slides in a carousel post.
Media details of each carousel slide.
Image URL of carousel slides.
Accessibility alt text.
### Detail Fields
The following fields require `enrich_comments: true` in settings.
Latest comments on the post or reel.
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"post_id": "3123456789", "shortcode": "C1a2b3c4d", "input_search": "travel", "owner_username": "travel_blogger", "likes_count": 4821, "comments_count": 93, "timestamp_datetime": "2026-09-10T14:23:00"}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/instagram-hashtags-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Instagram Search & Hashtags Scraper settings
Configure your **Instagram Search & Hashtags Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| **url** | string | — | Instagram hashtag, keyword, hashtag URL, or search keyword |
| **get\_posts** | boolean | true | Include image and carousel posts |
| **get\_reels** | boolean | true | Include video reels |
| **search\_type** | string | recent | Which tab to scrape: 'recent' or 'top' |
| **max\_results** | integer | — | Total posts/reels to collect per hashtag |
| **max\_unique\_results\_per\_run** | integer | — | Max unique posts across all tasks in the run |
| **fetch\_since** | string | — | Only keep media published after this point (YYYY-MM-DD or 24h, 7d) |
| **fetch\_since\_timezone** | string | — | Timezone for interpreting fetch\_since date |
| **enrich\_comments** | boolean | false | Collect up to 10 latest comments per post/reel |
Setting `enrich_comments: true` enables additional comment fields (`comment_1` through `comment_10`) in results.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"params": {"get_posts": true, "get_reels": true, "search_type": "top", "max_results": 500}}'
```
```python Python theme={null}
import requests
requests.post("https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH",
headers={"Authorization": "Token YOUR_API_KEY", "Content-Type": "application/json"},
json={"params": {"get_posts": true, "get_reels": true, "search_type": "top", "max_results": 500}})
```
## Response
```json 201 theme={null}
{"params": {"get_posts": true, "get_reels": true, "search_type": "top", "max_results": 500}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/instagram-posts-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add Instagram profile URLs, post URLs, or usernames to scrape posts using the lobstr.io API
Add Instagram profiles or posts as tasks to your squid. The scraper will extract posts, captions, engagement metrics, and metadata from the provided profiles or individual posts.
You can provide a profile URL, a single post/reel URL, or just a username.
Crawler ID: `d25fddae52eb78eb385e60bc2adb6d1e`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Supported Input Formats
**Profile URL:**
`https://www.instagram.com/natgeo/`
`https://instagram.com/username`
**Single Post URL:**
`https://www.instagram.com/p/ABC123/`
**Reel URL:**
`https://www.instagram.com/reel/ABC123/`
**Username only:**
`natgeo`
`cristiano`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the Instagram Posts Scraper crawler |
| **tasks** | array | Yes | Array of task objects, each containing a `url` field |
You can use just the username without the full URL - the scraper will resolve it automatically.
When scraping a profile, all public posts will be collected. For single posts, only that specific post data is returned.
You can add up to 1000 tasks in a single request for bulk operations.
Duplicate URLs are automatically detected and won't be added twice.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.instagram.com/natgeo/"},
{"url": "https://www.instagram.com/cristiano/"}
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Add Instagram profiles to scrape posts from
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"squid": squid_id,
"tasks": [
{"url": "https://www.instagram.com/natgeo/"},
{"url": "https://www.instagram.com/cristiano/"}
]
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates skipped: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"tasks": [
{
"id": "task_abc123def456",
"status": "pending",
"params": {
"url": "https://www.instagram.com/natgeo/"
}
},
{
"id": "task_abc123def457",
"status": "pending",
"params": {
"url": "https://www.instagram.com/cristiano/"
}
}
],
"duplicated_count": 0
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/instagram-posts-scraper/credit-cost
Credit cost for the Instagram Post Scraper
1 credit per post
# Get Results
Source: https://docs.lobstr.io/examples/instagram-posts-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Instagram Post Scraper
Retrieve scraped data from your **Instagram Post Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Direct URL to the Instagram post. Example: `https://www.instagram.com/p/DUvd6BykR38/`
Unique identifier for the Instagram post. Example: `3832413338916167164`
Shortcode used in the Instagram post URL (e.g. instagram.com/p/\[shortcode]). Example: `DUvd6BykR38`
Caption text of the Instagram post. Example: `❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️ ❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️ ❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️`
Auto-generated or custom accessibility alt text for the post image
Instagram username of the post author. Example: `mrbeast`
Display name of the post author on Instagram. Example: `MrBeast`
Unique Instagram identifier of the post author. Example: `2278169415`
Number of likes the post received. Example: `2898085`
Number of comments on the post. Example: `13751`
Unix timestamp of when the post was published. Example: `1771079293`
Publication date and time of the post in ISO 8601 format. Example: `2026-02-14T14:28:13+00:00`
Instagram product type (e.g. FEED, REEL, CAROUSEL\_CONTAINER). Example: `carousel_container`
Whether the post is pinned to the top of the author's Instagram profile. Example: `false`
Width and height dimensions of the post media in pixels. Example: `1440x1800`
Direct URL to the post video (for video posts)
URL of the main displayed image or thumbnail. Example: `https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/629827271_18523332394073416_4008579742997677296_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=Hy97I2CyXXQQ7kNvwGfAaI6&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfzNj7CCE471uYwUAiWDybQPi0NQBpzFi04PFuSewkVz7w&oe=69C9B575&_nc_sid=7a9f4b`
Whether the post is labeled as a paid partnership on Instagram. Example: `false`
Number of slides in a carousel post. Example: `10`
Type of Instagram media (GraphImage, GraphVideo, GraphSidecar). Example: `carousel`
URL of the 1st slide in the carousel post. Example: `{'id': '3832413256816866684', 'alt': 'Photo shared by MrBeast on February 14, 2026 tagging @thea_booysen. May be an image of suit, dinner jacket, dress and text.', 'width': 1440, 'height': 1800, 'timestamp': 1771079291, 'video_url': '', 'media_type': 1, 'display_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/629827271_18523332394073416_4008579742997677296_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=Hy97I2CyXXQQ7kNvwGfAaI6&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfzNj7CCE471uYwUAiWDybQPi0NQBpzFi04PFuSewkVz7w&oe=69C9B575&_nc_sid=7a9f4b'}`
URL of the 2nd slide in the carousel post. Example: `{'id': '3832413257831891181', 'alt': 'Photo by MrBeast on February 14, 2026. May be an image of sarong and text.', 'width': 808, 'height': 1010, 'timestamp': 1771079291, 'video_url': '', 'media_type': 1, 'display_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/634070423_18523332418073416_8093318115582682097_n.jpg?stp=c0.101.808.808a_dst-jpg_e15_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=3HsL-n-oOq0Q7kNvwG3aStA&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_Afw1neVIFTZILzNPQKyQWzcvdicd-l657I9gg_bTOr9Zow&oe=69C9C481&_nc_sid=7a9f4b'}`
URL of the 3rd slide in the carousel post. Example: `{'id': '3832413259014697907', 'alt': 'Photo by MrBeast on February 14, 2026. May be an image of dress, dinner jacket and text.', 'width': 1321, 'height': 1651, 'timestamp': 1771079291, 'video_url': '', 'media_type': 1, 'display_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/628828280_18523332406073416_661484006221494270_n.jpg?stp=c0.165.1321.1321a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=PpJISy8MJbUQ7kNvwGu9ElO&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfwaabrPPegiLFrVXFJuW-TEMFN8zPa7x8IkYkfFQ6bnQA&oe=69C9C205&_nc_sid=7a9f4b'}`
URL of the 4th slide in the carousel post. Example: `{'id': '3832413260851795496', 'alt': "Photo by MrBeast on February 14, 2026. May be a selfie of one or more people, beard, blonde hair, people smiling and text that says 'BEAST'.", 'width': 1440, 'height': 1800, 'timestamp': 1771079291, 'video_url': '', 'media_type': 1, 'display_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/634659294_18523332427073416_2348820028961789267_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=pZvvekeApSUQ7kNvwHktBMf&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_Afwbd7qnGrUIdU3sWHYgC1ztd6TqyPR_ltkDqHBsfdtq9A&oe=69C9C9F0&_nc_sid=7a9f4b'}`
URL of the 5th slide in the carousel post. Example: `{'id': '3832413264878356157', 'alt': 'Photo by MrBeast on February 14, 2026. May be an image of anklet, ocean, beach, horizon, twilight and text.', 'width': 1440, 'height': 1800, 'timestamp': 1771079291, 'video_url': '', 'media_type': 1, 'display_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/629296616_18523332445073416_3272753193706244241_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=QP0EhyoUo44Q7kNvwFab3tP&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfwNLWj3PAVjPRqkGlKcXRcmTknGlZds8qICCp5AFWP8-Q&oe=69C9C639&_nc_sid=7a9f4b'}`
URL of the 6th slide in the carousel post. Example: `{'id': '3832413268342804404', 'alt': 'Photo by MrBeast on February 14, 2026. May be an image of the Great Sphinx of Giza and text.', 'width': 1440, 'height': 1800, 'timestamp': 1771079291, 'video_url': '', 'media_type': 1, 'display_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/634358656_18523332457073416_7842550311075904965_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=0sIpcFjCoj8Q7kNvwHqSLQ8&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfxhrkiYn4VhogYm8UiOAshWVxUE9wtTz5zPaNuBBsSXQg&oe=69C9AB98&_nc_sid=7a9f4b'}`
URL of the 7th slide in the carousel post. Example: `{'id': '3832413270037301475', 'alt': 'Photo by MrBeast on February 14, 2026. May be an image of standing, flight jacket, sweatshirt and text.', 'width': 1440, 'height': 1800, 'timestamp': 1771079291, 'video_url': '', 'media_type': 1, 'display_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/630090071_18523332469073416_8304515702865417393_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=cOmpvup85N0Q7kNvwH9llOF&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfwPeAozB8cVn61YX-w7PDfe83uiMLtBU5nqrCsFAD4KIg&oe=69C9CDD8&_nc_sid=7a9f4b'}`
URL of the 8th slide in the carousel post. Example: `{'id': '3832413270758732694', 'alt': 'Photo by MrBeast on February 14, 2026. May be an image of one or more people, makeup, dress, carpet, dinner jacket and text.', 'width': 1273, 'height': 1591, 'timestamp': 1771079291, 'video_url': '', 'media_type': 1, 'display_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/634545628_18523332481073416_7755207992088963941_n.jpg?stp=c0.159.1273.1273a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=Vrs33l1Xg1gQ7kNvwH8l8sV&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfzZ3wUKfkgo0fE7ia5qRc8thfQ2wYggd4rpx3aAMq6gCg&oe=69C9ADC4&_nc_sid=7a9f4b'}`
URL of the 9th slide in the carousel post. Example: `{'id': '3832413274751723140', 'alt': 'Photo by MrBeast on February 14, 2026. May be an image of text.', 'width': 1440, 'height': 1800, 'timestamp': 1771079291, 'video_url': '', 'media_type': 1, 'display_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/634484935_18523332490073416_139819657267577549_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=8XJxFs7dlkwQ7kNvwHcDZwu&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfyF8AVntTyDx1FzQ2Q00E8btgWahOyGvdEzjN9_rhNQAA&oe=69C9B971&_nc_sid=7a9f4b'}`
URL of the 10th slide in the carousel post. Example: `{'id': '3832413277696138409', 'alt': 'Photo by MrBeast on February 14, 2026. May be an image of standing and text.', 'width': 1440, 'height': 1799, 'timestamp': 1771079291, 'video_url': '', 'media_type': 1, 'display_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/627650519_18523332499073416_3328125859482164788_n.jpg?stp=c0.179.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=vEhjbl6kjOMQ7kNvwGArMWb&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_Afyq29HMFx3LNGZRW7tKnwV9Rieq2O8j6ktjn5Q3Q-YZTA&oe=69C9D9FC&_nc_sid=7a9f4b'}`
Direct URL to the Instagram reel (for reel posts). Example: `https://www.instagram.com/reel/DUvd6BykR38/`
URL of the 1st image in the post. Example: `https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/629827271_18523332394073416_4008579742997677296_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=Hy97I2CyXXQQ7kNvwGfAaI6&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfzNj7CCE471uYwUAiWDybQPi0NQBpzFi04PFuSewkVz7w&oe=69C9B575&_nc_sid=7a9f4b`
URL of the 2nd image in the post. Example: `https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/634070423_18523332418073416_8093318115582682097_n.jpg?stp=c0.101.808.808a_dst-jpg_e15_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=3HsL-n-oOq0Q7kNvwG3aStA&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_Afw1neVIFTZILzNPQKyQWzcvdicd-l657I9gg_bTOr9Zow&oe=69C9C481&_nc_sid=7a9f4b`
URL of the 3rd image in the post. Example: `https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/628828280_18523332406073416_661484006221494270_n.jpg?stp=c0.165.1321.1321a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=PpJISy8MJbUQ7kNvwGu9ElO&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfwaabrPPegiLFrVXFJuW-TEMFN8zPa7x8IkYkfFQ6bnQA&oe=69C9C205&_nc_sid=7a9f4b`
URL of the 4th image in the post. Example: `https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/634659294_18523332427073416_2348820028961789267_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=pZvvekeApSUQ7kNvwHktBMf&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_Afwbd7qnGrUIdU3sWHYgC1ztd6TqyPR_ltkDqHBsfdtq9A&oe=69C9C9F0&_nc_sid=7a9f4b`
URL of the 5th image in the post. Example: `https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/629296616_18523332445073416_3272753193706244241_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=QP0EhyoUo44Q7kNvwFab3tP&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfwNLWj3PAVjPRqkGlKcXRcmTknGlZds8qICCp5AFWP8-Q&oe=69C9C639&_nc_sid=7a9f4b`
Instagram accounts listed as co-authors of the post. Example: `[{'id': '1414860336', 'pk': '1414860336', 'username': 'thea_booysen', 'full_name': 'Thea Booysen', 'is_verified': True, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.82787-19/553677442_18530026390012337_655641549738307320_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmV4cGVyaW1lbnRhbCJ9&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=oIKVFf7jgGMQ7kNvwFYjw9x&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_Afy4BadHMUV0AJoMrP9o2jvgWsqg8T4gpdmiP_QGjevGrQ&oe=69C9ADC9&_nc_sid=7a9f4b'}]`
List of hashtags used in the post caption. Example: `[]`
Instagram users tagged in the post image. Example: `[{'id': '1414860336', 'pk': '1414860336', 'username': 'thea_booysen', 'full_name': 'Thea Booysen', 'is_verified': True, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.82787-19/553677442_18530026390012337_655641549738307320_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmV4cGVyaW1lbnRhbCJ9&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=oIKVFf7jgGMQ7kNvwFYjw9x&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_Afy4BadHMUV0AJoMrP9o2jvgWsqg8T4gpdmiP_QGjevGrQ&oe=69C9ADC9&_nc_sid=7a9f4b'}]`
Music track used in the reel or video post
Text content of the 1st comment on the post. Example: `{'text': 'I counted all hearts and they are 360.', 'user': {'fbid_v2': '17841460150735871', 'user_id': '60126973024', 'username': 'iissoo.00', 'is_verified': False, 'profile_pic_url': 'https://scontent-lga3-3.cdninstagram.com/v/t51.2885-19/619899761_17971202763005025_5630077481839522707_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-lga3-3.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=LSu5ObgXScQQ7kNvwFjKzzj&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfvlI0DY5ZvQohRA4kX8HtO-tt0TCXBkSlb5FBLGvMmKrA&oe=6997F268&_nc_sid=10d13b'}, 'giphy_id': None, 'giphy_url': None, 'comment_id': '18194531053341262', 'created_at': 1771081328, 'is_covered': False, 'child_comment_count': 65}`
Text content of the 2nd comment on the post. Example: `{'text': 'I guess bro’s in love guys', 'user': {'fbid_v2': '17841443882254151', 'user_id': '43873214741', 'username': 'dustydreams223', 'is_verified': False, 'profile_pic_url': 'https://scontent-bog2-1.cdninstagram.com/v/t51.2885-19/573323465_1219825463302212_7278921664109726296_n.png?stp=dst-jpg_e0_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xNTAuYzIifQ&_nc_ht=scontent-bog2-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QGhLmIc8QARdS8vwm0Kny7oYaQWxxXKkF_nPXEA-mo_y_lIZbaj6d9nKRDNbyBSIzg&_nc_ohc=eQeo-gpIgOcQ7kNvwHYzINg&_nc_gid=omRD8Pg20lH6Tapvy9TBkg&edm=ACjQdLwBAAAA&ccb=7-5&ig_cache_key=YW5vbnltb3VzX3Byb2ZpbGVfcGlj.3-ccb7-5&oh=00_Afup0HZXhDuCMpVmZ00WOUuBtcpw_lVT9nYr2E52OcRiKg&oe=6997E0AA&_nc_sid=7367d8'}, 'giphy_id': None, 'giphy_url': None, 'comment_id': '17942765145114468', 'created_at': 1771080632, 'is_covered': False, 'child_comment_count': 8}`
Text content of the 3rd comment on the post. Example: `{'text': 'The captain says a lot ❤️', 'user': {'fbid_v2': '17841463476913344', 'user_id': '63386755897', 'username': 'vfzhadi', 'is_verified': False, 'profile_pic_url': 'https://scontent-lga3-3.cdninstagram.com/v/t51.2885-19/574700709_17928220749115898_2743900552490211050_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-lga3-3.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=XcbhBdOpIcsQ7kNvwF7Z520&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfskXlxAaYJHo9Ij4NBmkGMO5wEnaCWbx7-jHl8HKYE_cg&oe=6997F6A1&_nc_sid=10d13b'}, 'giphy_id': None, 'giphy_url': None, 'comment_id': '18110182822736047', 'created_at': 1771079697, 'is_covered': False, 'child_comment_count': 8}`
Text content of the 4th comment on the post. Example: `{'text': 'HA ❤️ HAA💸☠️HA ❤️ HAA💸☠️', 'user': {'fbid_v2': '17841466615936790', 'user_id': '66534324531', 'username': 'aminul_hoque_00', 'is_verified': False, 'profile_pic_url': 'https://scontent-lga3-2.cdninstagram.com/v/t51.2885-19/470100472_1117866706372817_1131079864457271707_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-lga3-2.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=ctOcq_vz7eUQ7kNvwFbAdrq&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_Afs-fHYyeII6ZLdFK1suZ1ea7hokaBGWw8Bt-W8D0APyiQ&oe=6997EB43&_nc_sid=10d13b'}, 'giphy_id': None, 'giphy_url': None, 'comment_id': '17978647823980784', 'created_at': 1771135797, 'is_covered': False, 'child_comment_count': 5}`
Text content of the 5th comment on the post. Example: `{'text': 'His smile seems so genuine. She is lucky', 'user': {'fbid_v2': '17841402025326627', 'user_id': '2133019510', 'username': 'coffeeistlife', 'is_verified': False, 'profile_pic_url': 'https://scontent-lga3-2.cdninstagram.com/v/t51.2885-19/307819213_1039618516710907_2839511739751543137_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby43MTkuYzIifQ&_nc_ht=scontent-lga3-2.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=DSJ0vvl2bEMQ7kNvwH_hvuM&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_Afuw438C9keToAq1o_NTtgx7c54_hgmZ0OEGzlHQXr2teQ&oe=69980D8C&_nc_sid=10d13b'}, 'giphy_id': None, 'giphy_url': None, 'comment_id': '18090319546872728', 'created_at': 1771116996, 'is_covered': False, 'child_comment_count': 4}`
Text content of the 6th comment on the post. Example: `{'text': '🔥😍', 'user': {'fbid_v2': '17841407133269540', 'user_id': '7116325775', 'username': 'puranostalgiabr', 'is_verified': True, 'profile_pic_url': 'https://scontent-lga3-3.cdninstagram.com/v/t51.2885-19/241330609_572078267474355_636925262237092005_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4zMjAuYzIifQ&_nc_ht=scontent-lga3-3.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=RARiPnwxTB4Q7kNvwH9C_13&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_Afvzz8qji7qk3lkoTRrQ8N7GltwcTbsHK8yOmbiuwUedHw&oe=6997FB3F&_nc_sid=10d13b'}, 'giphy_id': None, 'giphy_url': None, 'comment_id': '18348119359230523', 'created_at': 1771112040, 'is_covered': False, 'child_comment_count': 0}`
Text content of the 7th comment on the post. Example: `{'text': '😍😍😍', 'user': {'fbid_v2': '17841401588115215', 'user_id': '333812937', 'username': 'soyjulianperezortiz', 'is_verified': False, 'profile_pic_url': 'https://scontent-lga3-3.cdninstagram.com/v/t51.2885-19/625449212_18557739511052938_6083300413781342683_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby44NDMuYzIifQ&_nc_ht=scontent-lga3-3.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=2CIQkJQLiiYQ7kNvwHPopik&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfsZfrkfT5vd9a6jWkEJIeykmU1VI6HopO_nsaQ2yxGnsw&oe=6997EDEB&_nc_sid=10d13b'}, 'giphy_id': None, 'giphy_url': None, 'comment_id': '17909525382167534', 'created_at': 1771147179, 'is_covered': False, 'child_comment_count': 0}`
Text content of the 8th comment on the post. Example: `{'text': '😍', 'user': {'fbid_v2': '17841401994547980', 'user_id': '2143842484', 'username': 'bubuit05', 'is_verified': False, 'profile_pic_url': 'https://scontent-lga3-2.cdninstagram.com/v/t51.2885-19/497879459_18483237493066485_5675764821276267624_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-lga3-2.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=agRVAFQsnHgQ7kNvwEn47I_&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfsGsUdAChlxxlOlmzH8ijhPlYmu5d6Dn1li3vCA4KgV-g&oe=6998088F&_nc_sid=10d13b'}, 'giphy_id': None, 'giphy_url': None, 'comment_id': '17936954832154444', 'created_at': 1771087500, 'is_covered': False, 'child_comment_count': 0}`
Text content of the 9th comment on the post. Example: `{'text': '30 seconds ago', 'user': {'fbid_v2': '17841466990603519', 'user_id': '66988153020', 'username': 'back2.cooked', 'is_verified': False, 'profile_pic_url': 'https://scontent-lga3-2.cdninstagram.com/v/t51.2885-19/598036905_17916784101233021_2845029466352532508_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-lga3-2.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=CXvbp94Ym-QQ7kNvwGhRwu_&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfuQXSEtW0tCYVlpgu9mB1mAfqrdag3ND6SOAmlPd4SXOg&oe=6997EA64&_nc_sid=10d13b'}, 'giphy_id': None, 'giphy_url': None, 'comment_id': '18106229494696390', 'created_at': 1771079340, 'is_covered': False, 'child_comment_count': 7}`
Text content of the 10th comment on the post. Example: `{'text': 'I love you so much ❤️', 'user': {'fbid_v2': '17841400370102107', 'user_id': '1414860336', 'username': 'thea_booysen', 'is_verified': True, 'profile_pic_url': 'https://scontent-lga3-3.cdninstagram.com/v/t51.2885-19/553677442_18530026390012337_655641549738307320_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-lga3-3.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=jI4Zrv23jeoQ7kNvwE24A_j&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfsVEVMKBuFGMg8hiqvPNzxCFR2lehpYlzM_1sGTQJWJSQ&oe=6998033F&_nc_sid=10d13b'}, 'giphy_id': None, 'giphy_url': None, 'comment_id': '18556298086009047', 'created_at': 1771080762, 'is_covered': False, 'child_comment_count': 142}`
Text content of the 11th comment on the post. Example: `{'text': 'Jimmy is looking jacked 💪🏻', 'user': {'fbid_v2': '17841407346852301', 'user_id': '7218412895', 'username': 'wall', 'is_verified': True, 'profile_pic_url': 'https://scontent-lga3-3.cdninstagram.com/v/t51.2885-19/590403602_18329195224244896_1051429854083726398_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-lga3-3.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=SdcXEQslNpYQ7kNvwFdJs7v&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfsmHMMSe1iggGlmzNvXxjGQh6lRQw1ZmBmDCqaMqOdmfA&oe=6997DBDD&_nc_sid=10d13b'}, 'giphy_id': None, 'giphy_url': None, 'comment_id': '18093072878481286', 'created_at': 1771079756, 'is_covered': False, 'child_comment_count': 6}`
Text content of the 12th comment on the post. Example: `{'text': 'Here the ones that think you are a perfect couple! We love you guys 💚 ——>', 'user': {'fbid_v2': '17841401432639989', 'user_id': '1279343754', 'username': 'jonathangomeztv', 'is_verified': False, 'profile_pic_url': 'https://scontent-lga3-3.cdninstagram.com/v/t51.2885-19/440895684_976237910512798_7640237670327447808_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDE4LmMyIn0&_nc_ht=scontent-lga3-3.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=BwXbEdL2kOQQ7kNvwHkNnvF&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AftVB0g2zLqqFwDc7uFBK3Q2oINd_5mdtfvhRfPcWqIvKw&oe=6998129F&_nc_sid=10d13b'}, 'giphy_id': None, 'giphy_url': None, 'comment_id': '18007278725837177', 'created_at': 1771079363, 'is_covered': False, 'child_comment_count': 5}`
Text content of the 13th comment on the post. Example: `{'text': 'Alguien que te apoye y te mire como Thea mira a Jimmy... Otra cosa hermano ❤️\u200d🩹', 'user': {'fbid_v2': '17841441381584761', 'user_id': '41318091386', 'username': 'alexxalphawolf', 'is_verified': False, 'profile_pic_url': 'https://scontent-lga3-3.cdninstagram.com/v/t51.2885-19/459330808_1877118572755098_8058557357144295504_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby45NzMuYzIifQ&_nc_ht=scontent-lga3-3.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=xwkTOM2kfpgQ7kNvwEhewYN&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfuDrpv4vwQEP4bBxlJNil_CUaaVr3Zuy1HQkpJ6NIwqEA&oe=6997F848&_nc_sid=10d13b'}, 'giphy_id': None, 'giphy_url': None, 'comment_id': '17852482149626548', 'created_at': 1771081193, 'is_covered': False, 'child_comment_count': 12}`
Text content of the 14th comment on the post. Example: `{'text': 'Aaaa la mama de Nolan 🥺', 'user': {'fbid_v2': '17841469260177088', 'user_id': '69256708672', 'username': 'juan.acosta9774', 'is_verified': False, 'profile_pic_url': 'https://scontent-lga3-2.cdninstagram.com/v/t51.2885-19/565992519_17898303309308673_2043076440287046363_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby45NTMuYzIifQ&_nc_ht=scontent-lga3-2.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=Z4XM21hTbk0Q7kNvwFNmw5u&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfvxWzLOWHaspA2VInQCXPiTTv-mHT2sSS48ruU8QzdfXA&oe=6997F954&_nc_sid=10d13b'}, 'giphy_id': None, 'giphy_url': None, 'comment_id': '17847438210660300', 'created_at': 1771096289, 'is_covered': False, 'child_comment_count': 1}`
Text content of the 15th comment on the post. Example: `{'text': 'cute 😭❤️', 'user': {'fbid_v2': '17841408283836383', 'user_id': '8371068127', 'username': 'starlight.avi', 'is_verified': False, 'profile_pic_url': 'https://scontent-lga3-2.cdninstagram.com/v/t51.2885-19/629369157_18302647696276128_4393177530793477705_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-lga3-2.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=xlepmkGd8fkQ7kNvwGnlNmR&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfvYUczQa8QuZoEyBeRS53glXXbNsi3CLgDN9AhX8kO_IA&oe=6997E71B&_nc_sid=10d13b'}, 'giphy_id': None, 'giphy_url': None, 'comment_id': '18102351191507791', 'created_at': 1771131487, 'is_covered': False, 'child_comment_count': 0}`
Whether the post is a video (media type video or reel). Example: `false`
List of @usernames mentioned in the post caption. Example: `['thea_booysen']`
Profile picture URL of the post author. Example: `https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/...`
The input URL or username this post was collected from. Example: `https://www.instagram.com/mrbeast/`
Additional enrichment functions enabled for this record. Example: `{}`
Timestamp when the post data was scraped. Example: `2026-03-25T14:16:55.485512+00:00`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 32896,
"object": "result",
"squid": "e8e981d91662b7296f4041ad5a412331",
"run": "9d4de00a69251d3975c6dd5fd899da0d",
"url": "https://www.instagram.com/p/DUvd6BykR38/",
"post_id": "3832413338916167164",
"shortcode": "DUvd6BykR38",
"caption": "❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️ ❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️ ❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️",
"alt": null,
"owner_username": "mrbeast",
"owner_full_name": "MrBeast",
"owner_id": "2278169415",
"likes_count": 2898085,
"comments_count": 13751,
"timestamp": 1771079293,
"timestamp_datetime": "2026-02-14T14:28:13+00:00",
"product_type": "carousel_container",
"is_pinned": false,
"dimensions": "1440x1800",
"video_url": null,
"display_url": "https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/629827271_18523332394073416_4008579742997677296_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=Hy97I2CyXXQQ7kNvwGfAaI6&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfzNj7CCE471uYwUAiWDybQPi0NQBpzFi04PFuSewkVz7w&oe=69C9B575&_nc_sid=7a9f4b",
"is_paid_partnership": false,
"carousel_media_count": 10,
"media_type": "carousel",
"child_post_1": {
"id": "3832413256816866684",
"alt": "Photo shared by MrBeast on February 14, 2026 tagging @thea_booysen. May be an image of suit, dinner jacket, dress and text.",
"width": 1440,
"height": 1800,
"timestamp": 1771079291,
"video_url": "",
"media_type": 1,
"display_url": "https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/629827271_18523332394073416_4008579742997677296_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=Hy97I2CyXXQQ7kNvwGfAaI6&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfzNj7CCE471uYwUAiWDybQPi0NQBpzFi04PFuSewkVz7w&oe=69C9B575&_nc_sid=7a9f4b"
},
"child_post_2": {
"id": "3832413257831891181",
"alt": "Photo by MrBeast on February 14, 2026. May be an image of sarong and text.",
"width": 808,
"height": 1010,
"timestamp": 1771079291,
"video_url": "",
"media_type": 1,
"display_url": "https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/634070423_18523332418073416_8093318115582682097_n.jpg?stp=c0.101.808.808a_dst-jpg_e15_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=3HsL-n-oOq0Q7kNvwG3aStA&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_Afw1neVIFTZILzNPQKyQWzcvdicd-l657I9gg_bTOr9Zow&oe=69C9C481&_nc_sid=7a9f4b"
},
"child_post_3": {
"id": "3832413259014697907",
"alt": "Photo by MrBeast on February 14, 2026. May be an image of dress, dinner jacket and text.",
"width": 1321,
"height": 1651,
"timestamp": 1771079291,
"video_url": "",
"media_type": 1,
"display_url": "https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/628828280_18523332406073416_661484006221494270_n.jpg?stp=c0.165.1321.1321a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=PpJISy8MJbUQ7kNvwGu9ElO&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfwaabrPPegiLFrVXFJuW-TEMFN8zPa7x8IkYkfFQ6bnQA&oe=69C9C205&_nc_sid=7a9f4b"
},
"child_post_4": {
"id": "3832413260851795496",
"alt": "Photo by MrBeast on February 14, 2026. May be a selfie of one or more people, beard, blonde hair, people smiling and text that says 'BEAST'.",
"width": 1440,
"height": 1800,
"timestamp": 1771079291,
"video_url": "",
"media_type": 1,
"display_url": "https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/634659294_18523332427073416_2348820028961789267_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=pZvvekeApSUQ7kNvwHktBMf&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_Afwbd7qnGrUIdU3sWHYgC1ztd6TqyPR_ltkDqHBsfdtq9A&oe=69C9C9F0&_nc_sid=7a9f4b"
},
"child_post_5": {
"id": "3832413264878356157",
"alt": "Photo by MrBeast on February 14, 2026. May be an image of anklet, ocean, beach, horizon, twilight and text.",
"width": 1440,
"height": 1800,
"timestamp": 1771079291,
"video_url": "",
"media_type": 1,
"display_url": "https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/629296616_18523332445073416_3272753193706244241_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=QP0EhyoUo44Q7kNvwFab3tP&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfwNLWj3PAVjPRqkGlKcXRcmTknGlZds8qICCp5AFWP8-Q&oe=69C9C639&_nc_sid=7a9f4b"
},
"child_post_6": {
"id": "3832413268342804404",
"alt": "Photo by MrBeast on February 14, 2026. May be an image of the Great Sphinx of Giza and text.",
"width": 1440,
"height": 1800,
"timestamp": 1771079291,
"video_url": "",
"media_type": 1,
"display_url": "https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/634358656_18523332457073416_7842550311075904965_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=0sIpcFjCoj8Q7kNvwHqSLQ8&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfxhrkiYn4VhogYm8UiOAshWVxUE9wtTz5zPaNuBBsSXQg&oe=69C9AB98&_nc_sid=7a9f4b"
},
"child_post_7": {
"id": "3832413270037301475",
"alt": "Photo by MrBeast on February 14, 2026. May be an image of standing, flight jacket, sweatshirt and text.",
"width": 1440,
"height": 1800,
"timestamp": 1771079291,
"video_url": "",
"media_type": 1,
"display_url": "https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/630090071_18523332469073416_8304515702865417393_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=cOmpvup85N0Q7kNvwH9llOF&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfwPeAozB8cVn61YX-w7PDfe83uiMLtBU5nqrCsFAD4KIg&oe=69C9CDD8&_nc_sid=7a9f4b"
},
"child_post_8": {
"id": "3832413270758732694",
"alt": "Photo by MrBeast on February 14, 2026. May be an image of one or more people, makeup, dress, carpet, dinner jacket and text.",
"width": 1273,
"height": 1591,
"timestamp": 1771079291,
"video_url": "",
"media_type": 1,
"display_url": "https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/634545628_18523332481073416_7755207992088963941_n.jpg?stp=c0.159.1273.1273a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=Vrs33l1Xg1gQ7kNvwH8l8sV&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfzZ3wUKfkgo0fE7ia5qRc8thfQ2wYggd4rpx3aAMq6gCg&oe=69C9ADC4&_nc_sid=7a9f4b"
},
"child_post_9": {
"id": "3832413274751723140",
"alt": "Photo by MrBeast on February 14, 2026. May be an image of text.",
"width": 1440,
"height": 1800,
"timestamp": 1771079291,
"video_url": "",
"media_type": 1,
"display_url": "https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/634484935_18523332490073416_139819657267577549_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=8XJxFs7dlkwQ7kNvwHcDZwu&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfyF8AVntTyDx1FzQ2Q00E8btgWahOyGvdEzjN9_rhNQAA&oe=69C9B971&_nc_sid=7a9f4b"
},
"child_post_10": {
"id": "3832413277696138409",
"alt": "Photo by MrBeast on February 14, 2026. May be an image of standing and text.",
"width": 1440,
"height": 1799,
"timestamp": 1771079291,
"video_url": "",
"media_type": 1,
"display_url": "https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/627650519_18523332499073416_3328125859482164788_n.jpg?stp=c0.179.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=vEhjbl6kjOMQ7kNvwGArMWb&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_Afyq29HMFx3LNGZRW7tKnwV9Rieq2O8j6ktjn5Q3Q-YZTA&oe=69C9D9FC&_nc_sid=7a9f4b"
},
"reel_url": "https://www.instagram.com/reel/DUvd6BykR38/",
"image_1": "https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/629827271_18523332394073416_4008579742997677296_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=Hy97I2CyXXQQ7kNvwGfAaI6&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfzNj7CCE471uYwUAiWDybQPi0NQBpzFi04PFuSewkVz7w&oe=69C9B575&_nc_sid=7a9f4b",
"image_2": "https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/634070423_18523332418073416_8093318115582682097_n.jpg?stp=c0.101.808.808a_dst-jpg_e15_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=3HsL-n-oOq0Q7kNvwG3aStA&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_Afw1neVIFTZILzNPQKyQWzcvdicd-l657I9gg_bTOr9Zow&oe=69C9C481&_nc_sid=7a9f4b",
"image_3": "https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/628828280_18523332406073416_661484006221494270_n.jpg?stp=c0.165.1321.1321a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=PpJISy8MJbUQ7kNvwGu9ElO&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfwaabrPPegiLFrVXFJuW-TEMFN8zPa7x8IkYkfFQ6bnQA&oe=69C9C205&_nc_sid=7a9f4b",
"image_4": "https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/634659294_18523332427073416_2348820028961789267_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=pZvvekeApSUQ7kNvwHktBMf&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_Afwbd7qnGrUIdU3sWHYgC1ztd6TqyPR_ltkDqHBsfdtq9A&oe=69C9C9F0&_nc_sid=7a9f4b",
"image_5": "https://scontent-ber1-1.cdninstagram.com/v/t51.82787-15/629296616_18523332445073416_3272753193706244241_n.jpg?stp=c0.180.1440.1440a_dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=QP0EhyoUo44Q7kNvwFab3tP&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_AfwNLWj3PAVjPRqkGlKcXRcmTknGlZds8qICCp5AFWP8-Q&oe=69C9C639&_nc_sid=7a9f4b",
"coauthors": [
{
"id": "1414860336",
"pk": "1414860336",
"username": "thea_booysen",
"full_name": "Thea Booysen",
"is_verified": true,
"profile_pic_url": "https://scontent-ber1-1.cdninstagram.com/v/t51.82787-19/553677442_18530026390012337_655641549738307320_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmV4cGVyaW1lbnRhbCJ9&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=oIKVFf7jgGMQ7kNvwFYjw9x&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_Afy4BadHMUV0AJoMrP9o2jvgWsqg8T4gpdmiP_QGjevGrQ&oe=69C9ADC9&_nc_sid=7a9f4b"
}
],
"hashtags": [],
"user_tags": [
{
"id": "1414860336",
"pk": "1414860336",
"username": "thea_booysen",
"full_name": "Thea Booysen",
"is_verified": true,
"profile_pic_url": "https://scontent-ber1-1.cdninstagram.com/v/t51.82787-19/553677442_18530026390012337_655641549738307320_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmV4cGVyaW1lbnRhbCJ9&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2gHa9ZAlfDCL2uC0xsRQSYqMenrKa-jyg7vYDL2UsBn_5Mm7nJIENahGvk54i7DDtQM&_nc_ohc=oIKVFf7jgGMQ7kNvwFYjw9x&_nc_gid=XrreQMmBbpLHaA0ESwHNCA&edm=AP4sbd4BAAAA&ccb=7-5&oh=00_Afy4BadHMUV0AJoMrP9o2jvgWsqg8T4gpdmiP_QGjevGrQ&oe=69C9ADC9&_nc_sid=7a9f4b"
}
],
"music": null,
"comment_1": {
"text": "I counted all hearts and they are 360.",
"user": {
"fbid_v2": "17841460150735871",
"user_id": "60126973024",
"username": "iissoo.00",
"is_verified": false,
"profile_pic_url": "https://scontent-lga3-3.cdninstagram.com/v/t51.2885-19/619899761_17971202763005025_5630077481839522707_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-lga3-3.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=LSu5ObgXScQQ7kNvwFjKzzj&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfvlI0DY5ZvQohRA4kX8HtO-tt0TCXBkSlb5FBLGvMmKrA&oe=6997F268&_nc_sid=10d13b"
},
"giphy_id": null,
"giphy_url": null,
"comment_id": "18194531053341262",
"created_at": 1771081328,
"is_covered": false,
"child_comment_count": 65
},
"comment_2": {
"text": "I guess bro’s in love guys",
"user": {
"fbid_v2": "17841443882254151",
"user_id": "43873214741",
"username": "dustydreams223",
"is_verified": false,
"profile_pic_url": "https://scontent-bog2-1.cdninstagram.com/v/t51.2885-19/573323465_1219825463302212_7278921664109726296_n.png?stp=dst-jpg_e0_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xNTAuYzIifQ&_nc_ht=scontent-bog2-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QGhLmIc8QARdS8vwm0Kny7oYaQWxxXKkF_nPXEA-mo_y_lIZbaj6d9nKRDNbyBSIzg&_nc_ohc=eQeo-gpIgOcQ7kNvwHYzINg&_nc_gid=omRD8Pg20lH6Tapvy9TBkg&edm=ACjQdLwBAAAA&ccb=7-5&ig_cache_key=YW5vbnltb3VzX3Byb2ZpbGVfcGlj.3-ccb7-5&oh=00_Afup0HZXhDuCMpVmZ00WOUuBtcpw_lVT9nYr2E52OcRiKg&oe=6997E0AA&_nc_sid=7367d8"
},
"giphy_id": null,
"giphy_url": null,
"comment_id": "17942765145114468",
"created_at": 1771080632,
"is_covered": false,
"child_comment_count": 8
},
"comment_3": {
"text": "The captain says a lot ❤️",
"user": {
"fbid_v2": "17841463476913344",
"user_id": "63386755897",
"username": "vfzhadi",
"is_verified": false,
"profile_pic_url": "https://scontent-lga3-3.cdninstagram.com/v/t51.2885-19/574700709_17928220749115898_2743900552490211050_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-lga3-3.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=XcbhBdOpIcsQ7kNvwF7Z520&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfskXlxAaYJHo9Ij4NBmkGMO5wEnaCWbx7-jHl8HKYE_cg&oe=6997F6A1&_nc_sid=10d13b"
},
"giphy_id": null,
"giphy_url": null,
"comment_id": "18110182822736047",
"created_at": 1771079697,
"is_covered": false,
"child_comment_count": 8
},
"comment_4": {
"text": "HA ❤️ HAA💸☠️HA ❤️ HAA💸☠️",
"user": {
"fbid_v2": "17841466615936790",
"user_id": "66534324531",
"username": "aminul_hoque_00",
"is_verified": false,
"profile_pic_url": "https://scontent-lga3-2.cdninstagram.com/v/t51.2885-19/470100472_1117866706372817_1131079864457271707_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-lga3-2.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=ctOcq_vz7eUQ7kNvwFbAdrq&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_Afs-fHYyeII6ZLdFK1suZ1ea7hokaBGWw8Bt-W8D0APyiQ&oe=6997EB43&_nc_sid=10d13b"
},
"giphy_id": null,
"giphy_url": null,
"comment_id": "17978647823980784",
"created_at": 1771135797,
"is_covered": false,
"child_comment_count": 5
},
"comment_5": {
"text": "His smile seems so genuine. She is lucky",
"user": {
"fbid_v2": "17841402025326627",
"user_id": "2133019510",
"username": "coffeeistlife",
"is_verified": false,
"profile_pic_url": "https://scontent-lga3-2.cdninstagram.com/v/t51.2885-19/307819213_1039618516710907_2839511739751543137_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby43MTkuYzIifQ&_nc_ht=scontent-lga3-2.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=DSJ0vvl2bEMQ7kNvwH_hvuM&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_Afuw438C9keToAq1o_NTtgx7c54_hgmZ0OEGzlHQXr2teQ&oe=69980D8C&_nc_sid=10d13b"
},
"giphy_id": null,
"giphy_url": null,
"comment_id": "18090319546872728",
"created_at": 1771116996,
"is_covered": false,
"child_comment_count": 4
},
"comment_6": {
"text": "🔥😍",
"user": {
"fbid_v2": "17841407133269540",
"user_id": "7116325775",
"username": "puranostalgiabr",
"is_verified": true,
"profile_pic_url": "https://scontent-lga3-3.cdninstagram.com/v/t51.2885-19/241330609_572078267474355_636925262237092005_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4zMjAuYzIifQ&_nc_ht=scontent-lga3-3.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=RARiPnwxTB4Q7kNvwH9C_13&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_Afvzz8qji7qk3lkoTRrQ8N7GltwcTbsHK8yOmbiuwUedHw&oe=6997FB3F&_nc_sid=10d13b"
},
"giphy_id": null,
"giphy_url": null,
"comment_id": "18348119359230523",
"created_at": 1771112040,
"is_covered": false,
"child_comment_count": 0
},
"comment_7": {
"text": "😍😍😍",
"user": {
"fbid_v2": "17841401588115215",
"user_id": "333812937",
"username": "soyjulianperezortiz",
"is_verified": false,
"profile_pic_url": "https://scontent-lga3-3.cdninstagram.com/v/t51.2885-19/625449212_18557739511052938_6083300413781342683_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby44NDMuYzIifQ&_nc_ht=scontent-lga3-3.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=2CIQkJQLiiYQ7kNvwHPopik&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfsZfrkfT5vd9a6jWkEJIeykmU1VI6HopO_nsaQ2yxGnsw&oe=6997EDEB&_nc_sid=10d13b"
},
"giphy_id": null,
"giphy_url": null,
"comment_id": "17909525382167534",
"created_at": 1771147179,
"is_covered": false,
"child_comment_count": 0
},
"comment_8": {
"text": "😍",
"user": {
"fbid_v2": "17841401994547980",
"user_id": "2143842484",
"username": "bubuit05",
"is_verified": false,
"profile_pic_url": "https://scontent-lga3-2.cdninstagram.com/v/t51.2885-19/497879459_18483237493066485_5675764821276267624_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-lga3-2.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=agRVAFQsnHgQ7kNvwEn47I_&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfsGsUdAChlxxlOlmzH8ijhPlYmu5d6Dn1li3vCA4KgV-g&oe=6998088F&_nc_sid=10d13b"
},
"giphy_id": null,
"giphy_url": null,
"comment_id": "17936954832154444",
"created_at": 1771087500,
"is_covered": false,
"child_comment_count": 0
},
"comment_9": {
"text": "30 seconds ago",
"user": {
"fbid_v2": "17841466990603519",
"user_id": "66988153020",
"username": "back2.cooked",
"is_verified": false,
"profile_pic_url": "https://scontent-lga3-2.cdninstagram.com/v/t51.2885-19/598036905_17916784101233021_2845029466352532508_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-lga3-2.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=CXvbp94Ym-QQ7kNvwGhRwu_&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfuQXSEtW0tCYVlpgu9mB1mAfqrdag3ND6SOAmlPd4SXOg&oe=6997EA64&_nc_sid=10d13b"
},
"giphy_id": null,
"giphy_url": null,
"comment_id": "18106229494696390",
"created_at": 1771079340,
"is_covered": false,
"child_comment_count": 7
},
"comment_10": {
"text": "I love you so much ❤️",
"user": {
"fbid_v2": "17841400370102107",
"user_id": "1414860336",
"username": "thea_booysen",
"is_verified": true,
"profile_pic_url": "https://scontent-lga3-3.cdninstagram.com/v/t51.2885-19/553677442_18530026390012337_655641549738307320_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-lga3-3.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=jI4Zrv23jeoQ7kNvwE24A_j&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfsVEVMKBuFGMg8hiqvPNzxCFR2lehpYlzM_1sGTQJWJSQ&oe=6998033F&_nc_sid=10d13b"
},
"giphy_id": null,
"giphy_url": null,
"comment_id": "18556298086009047",
"created_at": 1771080762,
"is_covered": false,
"child_comment_count": 142
},
"comment_11": {
"text": "Jimmy is looking jacked 💪🏻",
"user": {
"fbid_v2": "17841407346852301",
"user_id": "7218412895",
"username": "wall",
"is_verified": true,
"profile_pic_url": "https://scontent-lga3-3.cdninstagram.com/v/t51.2885-19/590403602_18329195224244896_1051429854083726398_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-lga3-3.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=SdcXEQslNpYQ7kNvwFdJs7v&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfsmHMMSe1iggGlmzNvXxjGQh6lRQw1ZmBmDCqaMqOdmfA&oe=6997DBDD&_nc_sid=10d13b"
},
"giphy_id": null,
"giphy_url": null,
"comment_id": "18093072878481286",
"created_at": 1771079756,
"is_covered": false,
"child_comment_count": 6
},
"comment_12": {
"text": "Here the ones that think you are a perfect couple! We love you guys 💚 ——>",
"user": {
"fbid_v2": "17841401432639989",
"user_id": "1279343754",
"username": "jonathangomeztv",
"is_verified": false,
"profile_pic_url": "https://scontent-lga3-3.cdninstagram.com/v/t51.2885-19/440895684_976237910512798_7640237670327447808_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDE4LmMyIn0&_nc_ht=scontent-lga3-3.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=BwXbEdL2kOQQ7kNvwHkNnvF&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AftVB0g2zLqqFwDc7uFBK3Q2oINd_5mdtfvhRfPcWqIvKw&oe=6998129F&_nc_sid=10d13b"
},
"giphy_id": null,
"giphy_url": null,
"comment_id": "18007278725837177",
"created_at": 1771079363,
"is_covered": false,
"child_comment_count": 5
},
"comment_13": {
"text": "Alguien que te apoye y te mire como Thea mira a Jimmy... Otra cosa hermano ❤️🩹",
"user": {
"fbid_v2": "17841441381584761",
"user_id": "41318091386",
"username": "alexxalphawolf",
"is_verified": false,
"profile_pic_url": "https://scontent-lga3-3.cdninstagram.com/v/t51.2885-19/459330808_1877118572755098_8058557357144295504_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby45NzMuYzIifQ&_nc_ht=scontent-lga3-3.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=xwkTOM2kfpgQ7kNvwEhewYN&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfuDrpv4vwQEP4bBxlJNil_CUaaVr3Zuy1HQkpJ6NIwqEA&oe=6997F848&_nc_sid=10d13b"
},
"giphy_id": null,
"giphy_url": null,
"comment_id": "17852482149626548",
"created_at": 1771081193,
"is_covered": false,
"child_comment_count": 12
},
"comment_14": {
"text": "Aaaa la mama de Nolan 🥺",
"user": {
"fbid_v2": "17841469260177088",
"user_id": "69256708672",
"username": "juan.acosta9774",
"is_verified": false,
"profile_pic_url": "https://scontent-lga3-2.cdninstagram.com/v/t51.2885-19/565992519_17898303309308673_2043076440287046363_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby45NTMuYzIifQ&_nc_ht=scontent-lga3-2.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=Z4XM21hTbk0Q7kNvwFNmw5u&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfvxWzLOWHaspA2VInQCXPiTTv-mHT2sSS48ruU8QzdfXA&oe=6997F954&_nc_sid=10d13b"
},
"giphy_id": null,
"giphy_url": null,
"comment_id": "17847438210660300",
"created_at": 1771096289,
"is_covered": false,
"child_comment_count": 1
},
"comment_15": {
"text": "cute 😭❤️",
"user": {
"fbid_v2": "17841408283836383",
"user_id": "8371068127",
"username": "starlight.avi",
"is_verified": false,
"profile_pic_url": "https://scontent-lga3-2.cdninstagram.com/v/t51.2885-19/629369157_18302647696276128_4393177530793477705_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-lga3-2.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2QFy67K-2tJZVpc5mghVSGhSbb4B6q0X8AQWnVq63Wb3ERgK-pYb8h_HZrvycSa9eRY&_nc_ohc=xlepmkGd8fkQ7kNvwGnlNmR&_nc_gid=w_5zFa1XPB3CcA4Dp0HZrg&edm=APs17CUBAAAA&ccb=7-5&oh=00_AfvYUczQa8QuZoEyBeRS53glXXbNsi3CLgDN9AhX8kO_IA&oe=6997E71B&_nc_sid=10d13b"
},
"giphy_id": null,
"giphy_url": null,
"comment_id": "18102351191507791",
"created_at": 1771131487,
"is_covered": false,
"child_comment_count": 0
},
"is_video": false,
"mentions": [],
"owner_profile_pic_url": "https://scontent-mrs2-2.cdninstagram.com/v/t51.82787-19/683576066_18653628823019147_8963256133417732520_n.jpg",
"source_url": "https://www.instagram.com/natgeo/",
"functions": null,
"scraping_time": "2026-03-25T14:16:55.485512+00:00",
"native_id": 32896
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/instagram-posts-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Instagram Posts Scraper settings
Configure your Instagram Posts Scraper squid settings. Control the maximum number of posts collected, filter by time range, and exclude pinned posts.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_results** | integer | unlimited | Total posts the crawler will collect per profile |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum number of unique posts retrieved across all tasks in the entire run |
| **fetch\_since** | string | unlimited | Stop scraping when items older than this threshold are reached (based on `published_at`). Use a relative duration (24h, 7d, 2w) or an absolute date (YYYY-MM-DD) |
| **fetch\_since\_timezone** | string | null | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Only applies when `fetch_since` is an absolute date — ignored for relative values like `24h` or `7d`. See [supported timezones](/docs/timezones). |
| **skip\_pinned\_posts** | boolean | false | If enabled, pinned posts will be excluded from the results |
| **enrich\_comments** | boolean | true | Collect up to 15 latest comments per post (1 extra request per post). Disable for much faster scraping |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Use `fetch_since` to only collect recent posts - great for monitoring accounts for new content.
Leave limits empty or null for unlimited collection.
Enable `skip_pinned_posts` when you only want organic timeline posts without promotional pinned content.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"export_unique_results": true,
"params": {
"max_results": 50,
"max_unique_results_per_run": 1000,
"fetch_since": "7d",
"skip_pinned_posts": false
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Update squid settings
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"export_unique_results": True,
"params": {
"max_results": 50,
"max_unique_results_per_run": 1000,
"fetch_since": "7d",
"skip_pinned_posts": False
}
}
)
data = response.json()
print(f"Max results: {data['params']['max_results']}")
print(f"Fetch since: {data['params']['fetch_since']}")
```
## Response
```json 201 theme={null}
{
"export_unique_results": true,
"params": {
"max_results": 50,
"max_unique_results_per_run": 1000,
"fetch_since": "7d",
"skip_pinned_posts": false
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/instagram-profile-scraper/add-tasks
POST https://api.lobstr.io/v2/squid/{squid_id}/task
Add Instagram profile URLs or usernames to scrape using the lobstr.io API
Add Instagram profiles as tasks to your squid. You can provide either a full profile URL or just the username.
Crawler ID: `5c55ffbf10fbbc7ee63ebb2bcaa332b7`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Supported Input Formats
**Profile URL:**
`https://www.instagram.com/username/`
`https://instagram.com/username`
**Username only:**
`leomessi`
`cristiano`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **url** | string | Yes | Instagram Profile URL or Username to scrape profile information from |
You can use just the username without the full URL - the scraper will resolve it automatically.
Private profiles will return limited data. Only public profile information is accessible.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/api/v2/squid/YOUR_SQUID_ID/task" \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.instagram.com/leomessi/"
}'
```
```python Python theme={null}
import requests
API_TOKEN = "YOUR_API_TOKEN"
SQUID_ID = "YOUR_SQUID_ID"
url = f"https://api.lobstr.io/api/v2/squid/{SQUID_ID}/task"
headers = {
"Authorization": f"Token {API_TOKEN}",
"Content-Type": "application/json"
}
data = {
"url": "https://www.instagram.com/leomessi/"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
```
## Response
```json 200 theme={null}
{
"id": "task_abc123def456",
"status": "pending",
"created_at": "2025-01-15T10:30:00Z",
"url": "https://www.instagram.com/leomessi/"
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/instagram-profile-scraper/credit-cost
Credit cost for the Instagram Profile Scraper
1 credit per profile.
# Get Results
Source: https://docs.lobstr.io/examples/instagram-profile-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Instagram Profile Scraper
Retrieve scraped data from your **Instagram Profile Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Direct URL to the Instagram profile. Example: `https://www.instagram.com/rap/`
Instagram username of the account. Example: `rap`
Display name of the Instagram account. Example: `RapTV`
Bio text shown on the Instagram profile page. Example: `What's Next in Hip Hop & Culture‼️
🔋 a @lowbattery brand
🌐 @bars @concert @drip
⬇️Purchase RapTV's "What A Time" Zine`
URL of the account's Instagram profile picture. Example: `https://scontent-sea1-1.cdninstagram.com/v/t51.2885-19/606497536_18573290305036669_6922238950325835238_n.jpg?stp=dst-jpg_s320x320_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QGLXYrAma8EncSqcOiqKIcHKbxVivwPqYwx_xj92YylT2fDFMMKI-V3K1wfaUNhtvQ&_nc_ohc=2lxJXKMwDVIQ7kNvwGOIvuK&_nc_gid=GbO4qzpMwEDC4wLEu3EOeQ&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_Afobuv01_l-OtINPJ-wg-xxgJlqZyMUEyjk5yy9AZcqefQ&oe=6962A8EB&_nc_sid=8b3546`
Unique internal identifier for the Instagram account. Example: `1459940668`
Internal Facebook/Meta identifier linked to the Instagram account. Example: `17841401100062811`
Total number of Instagram followers. Example: `12747786`
Total number of accounts this profile follows. Example: `1607`
Total number of posts published by this account. Example: `55976`
Whether the Instagram account is set to private. Example: `false`
Whether the account has a verified badge on Instagram. Example: `true`
Whether the account is registered as an Instagram Business account. Example: `false`
Whether the account is registered as a Professional (Creator or Business) account. Example: `true`
Whether the account was created recently on Instagram. Example: `false`
Category or niche of the account (e.g. Public Figure, Artist, Restaurant). Example: `Media/news company`
Email address listed on the Instagram business profile
Phone number listed on the Instagram business profile
Preferred contact method configured on the Instagram business profile. Example: `UNKNOWN`
First external link listed in the Instagram profile bio. Example: `{'url': 'https://linkin.bio/raptv', 'title': '', 'lynx_url': 'https://l.instagram.com/?u=https%3A%2F%2Flinkin.bio%2Fraptv&e=AT1y8V__CJ3AzWE2k-FOtdtu84FoBDS37Q5xu8e2Qwu26y5gfDH6fPjwXDM3yPFOg1_2j4HyXudJsgN_Ss8YZ0ZBXMeMZKkP', 'link_type': 'external'}`
Second external link listed in the Instagram profile bio. Example: `{'url': 'http://whatatimezine.com', 'title': 'RapTV Zine', 'lynx_url': 'https://l.instagram.com/?u=http%3A%2F%2Fwhatatimezine.com%2F&e=AT3B5UMx3zD_egGreWtkNTBf8Ns1ylMOeK6w9F3TuIJjOZdXssF9nDM2MpEkBAs6H8FL9ACXPzGtY2mjq5e1lBPPCYmRh3RG', 'link_type': 'external'}`
Third external link listed in the Instagram profile bio. Example: `{'url': 'https://teamwater.org/', 'title': 'Team Water', 'lynx_url': 'https://l.instagram.com/?u=https%3A%2F%2Fteamwater.org%2F&e=AT2j42otjhH4ej8VjauY1AwMkA7Enhrkkib8Fi8SqcfWMorigPVsTSohy1Wm6VHBVA684itOmoP6u2O4DTSw0Od7yBj6zz6H', 'link_type': 'external'}`
All external links listed in the Instagram profile bio. Example: `[{'url': 'https://linkin.bio/raptv', 'title': '', 'lynx_url': 'https://l.instagram.com/?u=https%3A%2F%2Flinkin.bio%2Fraptv&e=AT1y8V__CJ3AzWE2k-FOtdtu84FoBDS37Q5xu8e2Qwu26y5gfDH6fPjwXDM3yPFOg1_2j4HyXudJsgN_Ss8YZ0ZBXMeMZKkP', 'link_type': 'external'}, {'url': 'http://whatatimezine.com', 'title': 'RapTV Zine', 'lynx_url': 'https://l.instagram.com/?u=http%3A%2F%2Fwhatatimezine.com%2F&e=AT3B5UMx3zD_egGreWtkNTBf8Ns1ylMOeK6w9F3TuIJjOZdXssF9nDM2MpEkBAs6H8FL9ACXPzGtY2mjq5e1lBPPCYmRh3RG', 'link_type': 'external'}, {'url': 'https://teamwater.org/', 'title': 'Team Water', 'lynx_url': 'https://l.instagram.com/?u=https%3A%2F%2Fteamwater.org%2F&e=AT2j42otjhH4ej8VjauY1AwMkA7Enhrkkib8Fi8SqcfWMorigPVsTSohy1Wm6VHBVA684itOmoP6u2O4DTSw0Od7yBj6zz6H', 'link_type': 'external'}]`
Total number of story highlight reels on the profile. Example: `9`
Total number of IGTV videos published by this account. Example: `73`
Whether the account has a linked broadcast channel on Instagram. Example: `false`
Whether the account has Instagram Clips (Reels) content. Example: `true`
Whether the account has Instagram Guides. Example: `false`
URL of the 1st most recent IGTV video. Example: `{'id': '2990969497965202326', 'url': 'https://www.instagram.com/reel/CmCDulcPouW/', 'likes': 53671, 'title': '', 'views': 270959, 'caption': "#SauceWalka met his biggest fan‼👀 Walka met a fan who he deeply impacted. How do y'all feel about this⁉🤔", 'comments': 458, 'duration': 87.466, 'location': None, 'posted_at': 1670771399, 'shortcode': 'CmCDulcPouW', 'thumbnail_url': 'https://scontent-sea5-1.cdninstagram.com/v/t51.2885-15/319123546_157570383298762_6241505073778244047_n.jpg?stp=c0.135.1080.1080a_dst-jpg_e35_s640x640_sh0.08_tt6&_nc_ht=scontent-sea5-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2QGLXYrAma8EncSqcOiqKIcHKbxVivwPqYwx_xj92YylT2fDFMMKI-V3K1wfaUNhtvQ&_nc_ohc=lp6CmfKnNQ0Q7kNvwFzF7Db&_nc_gid=GbO4qzpMwEDC4wLEu3EOeQ&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_AfqYcgvDGdlW_F8QBaiI5mFbVF1xX2nWGKMQzvWJC_3tyQ&oe=6962C607&_nc_sid=8b3546'}`
URL of the 2nd most recent IGTV video. Example: `{'id': '2893228810109674349', 'url': 'https://www.instagram.com/reel/Cgm0EYYg2Nt/', 'likes': 94409, 'title': '', 'views': 498586, 'caption': "#DJKhaled trying to hit the Mega Millions for the $1 Billion cash prize. Did y'all cop a ticket⁉️ Follow @BARS for behind the scenes content‼️", 'comments': 698, 'duration': 24.7, 'location': None, 'posted_at': 1659119853, 'shortcode': 'Cgm0EYYg2Nt', 'thumbnail_url': 'https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/296164237_591475512329436_3321149571347964908_n.jpg?stp=c0.89.720.720a_dst-jpg_e15_s640x640_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2QGLXYrAma8EncSqcOiqKIcHKbxVivwPqYwx_xj92YylT2fDFMMKI-V3K1wfaUNhtvQ&_nc_ohc=HyQoqdl3TdMQ7kNvwGuat83&_nc_gid=GbO4qzpMwEDC4wLEu3EOeQ&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_AfoHCA3EKBDke63AjLJrvy-vx8d30TB2Coq5jcNOP8o10g&oe=6962AB6D&_nc_sid=8b3546'}`
URL of the 3rd most recent IGTV video. Example: `{'id': '2893131765138890716', 'url': 'https://www.instagram.com/reel/CgmeAMNgJ_c/', 'likes': 215238, 'title': '', 'views': 915592, 'caption': 'Will Smith just released a 5 minute video addressing him slapping Chris Rock, as well as apologizing to him and his family‼️😳', 'comments': 1610, 'duration': 50.366, 'location': None, 'posted_at': 1659108234, 'shortcode': 'CgmeAMNgJ_c', 'thumbnail_url': 'https://scontent-sea5-1.cdninstagram.com/v/t51.2885-15/296436953_3345570412396450_1515402937347091776_n.jpg?stp=c0.89.720.720a_dst-jpg_e15_s640x640_tt6&_nc_ht=scontent-sea5-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2QGLXYrAma8EncSqcOiqKIcHKbxVivwPqYwx_xj92YylT2fDFMMKI-V3K1wfaUNhtvQ&_nc_ohc=aH7BIxYEE-0Q7kNvwHOWlsc&_nc_gid=GbO4qzpMwEDC4wLEu3EOeQ&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_Afp5Oa4gBnJH62Oe4W3grJHD7jWOJQ-Z2Qjq2LRE6LSRcw&oe=6962DDDD&_nc_sid=8b3546'}`
URL of the 4th most recent IGTV video. Example: `{'id': '2892870456929653049', 'url': 'https://www.instagram.com/reel/Cglilp-g5E5/', 'likes': 52183, 'title': '', 'views': 284444, 'caption': "#Drake kicking off his October World Weekend concert. Y'all rockin with it⁉️ Follow @concert for more‼️ 🎥 @complexcanada", 'comments': 274, 'duration': 56.366, 'location': None, 'posted_at': 1659077276, 'shortcode': 'Cglilp-g5E5', 'thumbnail_url': 'https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/295911941_722017562193368_4950961007415968397_n.jpg?stp=c0.89.720.720a_dst-jpg_e15_s640x640_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2QGLXYrAma8EncSqcOiqKIcHKbxVivwPqYwx_xj92YylT2fDFMMKI-V3K1wfaUNhtvQ&_nc_ohc=HDeXsVapBBwQ7kNvwEgm58o&_nc_gid=GbO4qzpMwEDC4wLEu3EOeQ&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_AfqhhjUn-99-pPay_mtQ9OZi-JlWz58vJv3tC0OI5KgxuA&oe=6962B740&_nc_sid=8b3546'}`
URL of the 1st most recent post. Example: `{'id': '3781759654318683349', 'url': 'https://www.instagram.com/p/DR7gl51kbTV/', 'type': 'GraphSidecar', 'likes': 66646, 'views': None, 'caption': 'The #RapTV Power Rankings for November 2025 have been revealed‼️🔥 Click the link in bio to see why these artists made the cut 👀', 'comments': 650, 'is_video': False, 'location': None, 'posted_at': 1765040903, 'shortcode': 'DR7gl51kbTV', 'audio_info': None, 'dimensions': {'width': 1080, 'height': 1346}, 'display_url': 'https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/591164148_18569581537036669_7700805801646043012_n.jpg?stp=dst-jpg_e35_p1080x1080_sh0.08_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=101', 'media_count': 3, 'product_type': None, 'tagged_users': None}`
URL of the 2nd most recent post. Example: `{'id': '3781084211714274896', 'url': 'https://www.instagram.com/p/DR5HA65ETZQ/', 'type': 'GraphSidecar', 'likes': 44670, 'views': None, 'caption': "Hit the link in bio to find out more about our Next-Up Class of 2025‼️ Y'all rockin' with any of them already⁉️", 'comments': 707, 'is_video': False, 'location': None, 'posted_at': 1764960384, 'shortcode': 'DR5HA65ETZQ', 'audio_info': None, 'dimensions': {'width': 1080, 'height': 1350}, 'display_url': 'https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/591144857_18569396479036669_6331524991528286918_n.jpg?stp=dst-jpg_e15_fr_p1080x1080_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=101', 'media_count': 18, 'product_type': None, 'tagged_users': [{'id': '3259531369', 'username': 'paymeskrilla', 'full_name': 'Skrilla🦴🐾🦴🐾', 'is_verified': True}, {'id': '7499114046', 'username': 'hurricane.wisdom', 'full_name': 'Wisdom🐢🇳🇬', 'is_verified': True}]}`
URL of the 3rd most recent post. Example: `{'id': '3744292296867999545', 'url': 'https://www.instagram.com/p/DP2ZgGCDG85/', 'type': 'GraphVideo', 'likes': 541957, 'views': 3056279, 'caption': 'KODAK BLACK MEDIA DAY EP 1‼️ Full freestyle @ link in bio 🎙️', 'comments': 13675, 'is_video': True, 'location': None, 'posted_at': 1760574556, 'shortcode': 'DP2ZgGCDG85', 'audio_info': {'audio_id': '1525594238568663', 'song_name': 'Original audio', 'artist_name': 'rap', 'uses_original_audio': True}, 'dimensions': {'width': 640, 'height': 1136}, 'display_url': 'https://scontent-sea5-1.cdninstagram.com/v/t51.2885-15/566773246_1340921630964055_2651647205854198667_n.jpg?stp=dst-jpg_e15_tt6&_nc_ht=scontent-sea5-1.cdninstagram.com&_nc_cat=107', 'media_count': None, 'product_type': 'clips', 'tagged_users': [{'id': '192197495', 'username': 'kodakblack', 'full_name': 'Bill Russell', 'is_verified': True}]}`
URL of the 4th most recent post. Example: `{'id': '3803885781283408912', 'url': 'https://www.instagram.com/p/DTKHfbXjowQ/', 'type': 'GraphSidecar', 'likes': 23457, 'views': None, 'caption': "We got two highly anticipated albums dropping this month‼️💿 Which one are y'all most excited for⁉️🤔 'BULLY' by #Ye OR 'DON'T BE DUMB' by #ASAPRocky Let us know down below‼️👇", 'comments': 413, 'is_video': False, 'location': None, 'posted_at': 1767678543, 'shortcode': 'DTKHfbXjowQ', 'audio_info': None, 'dimensions': {'width': 1080, 'height': 1346}, 'display_url': 'https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/610800578_18575383822036669_370893365218059988_n.jpg?stp=dst-jpg_e15_fr_p1080x1080_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1', 'media_count': 3, 'product_type': None, 'tagged_users': None}`
URL of the 5th most recent post. Example: `{'id': '3803871417327293855', 'url': 'https://www.instagram.com/p/DTKEOZ5DhWf/', 'type': 'GraphSidecar', 'likes': 46127, 'views': None, 'caption': "#Rakai is now unbanned on Twitch and he celebrated by being uncuffed by the police‼️🚨 Y'all happy to see Rakai back⁉️🤔", 'comments': 290, 'is_video': False, 'location': None, 'posted_at': 1767676830, 'shortcode': 'DTKEOZ5DhWf', 'audio_info': None, 'dimensions': {'width': 1080, 'height': 1346}, 'display_url': 'https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/609252800_18575380657036669_7913948580798256570_n.jpg?stp=dst-jpg_e35_p1080x1080_sh0.08_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1', 'media_count': 2, 'product_type': None, 'tagged_users': None}`
URL of the 6th most recent post. Example: `{'id': '3803836179947474913', 'url': 'https://www.instagram.com/p/DTJ8NohjE_h/', 'type': 'GraphSidecar', 'likes': 20362, 'views': None, 'caption': 'Mugshots from #ASAPRocky\'s "Punk Rocky" video‼️🎥', 'comments': 96, 'is_video': False, 'location': None, 'posted_at': 1767672630, 'shortcode': 'DTJ8NohjE_h', 'audio_info': None, 'dimensions': {'width': 1080, 'height': 1346}, 'display_url': 'https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/611342679_18575373289036669_125946305517673975_n.jpg?stp=dst-jpg_e35_p1080x1080_sh0.08_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1', 'media_count': 10, 'product_type': None, 'tagged_users': None}`
URL of the 7th most recent post. Example: `{'id': '3803789983816098876', 'url': 'https://www.instagram.com/p/DTJxtZBjCQ8/', 'type': 'GraphSidecar', 'likes': 21184, 'views': None, 'caption': "#Ye has earned over 60 BILLION STREAMS on Spotify‼️🤯 He is now the 4th most streamed rapper of all time on the platform 🔥 What Ye album have y'all streamed the most⁉️🤔 📸: @timmy.ty", 'comments': 197, 'is_video': False, 'location': None, 'posted_at': 1767667123, 'shortcode': 'DTJxtZBjCQ8', 'audio_info': None, 'dimensions': {'width': 1080, 'height': 1346}, 'display_url': 'https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/610712728_18575364046036669_6623987188310692834_n.jpg?stp=dst-jpg_e15_fr_p1080x1080_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1', 'media_count': 8, 'product_type': None, 'tagged_users': None}`
URL of the 8th most recent post. Example: `{'id': '3803760123928907245', 'url': 'https://www.instagram.com/p/DTJq631lA3t/', 'type': 'GraphSidecar', 'likes': 41045, 'views': None, 'caption': "Lil Durk's murder-for-hire trial has been delayed until the spring. On Monday (Jan. 5), Judge Michael W. Fitzgerald approved a request to continue the trial, which had been set to begin on Jan. 20. The trial for Lil Durk and his five co-defendants is now scheduled to start on May 4, with a pretrial conference set for April 13.", 'comments': 625, 'is_video': False, 'location': None, 'posted_at': 1767663563, 'shortcode': 'DTJq631lA3t', 'audio_info': None, 'dimensions': {'width': 1080, 'height': 1346}, 'display_url': 'https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/611616486_18575357614036669_7266703784068993426_n.jpg?stp=dst-jpg_e15_fr_p1080x1080_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1', 'media_count': 5, 'product_type': None, 'tagged_users': None}`
URL of the 9th most recent post. Example: `{'id': '3803736848142182312', 'url': 'https://www.instagram.com/p/DTJloKklCeo/', 'type': 'GraphSidecar', 'likes': 31972, 'views': None, 'caption': "#KyrieIrving bought #LaRussell's album for $11,000‼️🤯 LaRussell spoke on him waking up and seeing Kyrie's purchase of $11k and he also got a call for Kyrie giving him his flowers🙏 Y'all rockin' with this⁉️🤔", 'comments': 173, 'is_video': False, 'location': None, 'posted_at': 1767660789, 'shortcode': 'DTJloKklCeo', 'audio_info': None, 'dimensions': {'width': 1080, 'height': 1346}, 'display_url': 'https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/611249600_18575352745036669_3312886124186420117_n.jpg?stp=dst-jpg_e15_fr_p1080x1080_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1', 'media_count': 3, 'product_type': None, 'tagged_users': None}`
URL of the 10th most recent post. Example: `{'id': '3803703253754789563', 'url': 'https://www.instagram.com/p/DTJd_TXDT67/', 'type': 'GraphVideo', 'likes': 13415, 'views': 64782, 'caption': '#ASAPRocky dropped his first single from \'DON\'T BE DUMB\' called "Punk Rocky"‼️🔥 Y\'all rockin\' with the visuals⁉️🤔', 'comments': 240, 'is_video': True, 'location': None, 'posted_at': 1767656794, 'shortcode': 'DTJd_TXDT67', 'audio_info': {'audio_id': '728255996960884', 'song_name': 'Punk Rocky', 'artist_name': 'A$AP Rocky', 'uses_original_audio': False}, 'dimensions': {'width': 750, 'height': 1333}, 'display_url': 'https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/610835983_18575382973036669_6434301582458044265_n.jpg?stp=dst-jpg_e15_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=101', 'media_count': None, 'product_type': 'clips', 'tagged_users': None}`
URL of the 11th most recent post. Example: `{'id': '3803681281365293389', 'url': 'https://www.instagram.com/p/DTJY_j-lLlN/', 'type': 'GraphImage', 'likes': 52009, 'views': None, 'caption': 'A new study shows that women tend to pack almost twice as much as they need, bringing around 60 clothing items for a week-long trip when only about 34 are actually used‼️👀 According to a survey conducted by a travel insurance company, 72% of female travelers admit they overpack. Nearly two-thirds say they struggle to zip their suitcases, and 58% end up going over airline weight limits.', 'comments': 235, 'is_video': False, 'location': None, 'posted_at': 1767654164, 'shortcode': 'DTJY_j-lLlN', 'audio_info': None, 'dimensions': {'width': 1080, 'height': 1346}, 'display_url': 'https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/611208025_18575338294036669_1164335797954634545_n.jpg?stp=dst-jpg_e35_p1080x1080_sh0.08_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1', 'media_count': None, 'product_type': None, 'tagged_users': None}`
URL of the 12th most recent post. Example: `{'id': '3803615212940314915', 'url': 'https://www.instagram.com/p/DTJJ-I9lEkj/', 'type': 'GraphSidecar', 'likes': 66770, 'views': None, 'caption': '➡️Swipe to see the inspiration behind A$AP Rocky\'s new single art‼️ Rocky\'s cover art for "Punk Rocky" is seemingly inspired by PaRappa The Rappa, a classic PS1 game. PaRappa the Rapper is a rhythm game in which the main character, PaRappa, must make his way through each of the game\'s six stages by rapping. Rocky parallels the iconic game\'s cover in his new cover art. Y\'all rockin\' with it⁉️', 'comments': 295, 'is_video': False, 'location': None, 'posted_at': 1767646288, 'shortcode': 'DTJJ-I9lEkj', 'audio_info': None, 'dimensions': {'width': 1080, 'height': 1080}, 'display_url': 'https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/612182407_18575318113036669_3435325046338182668_n.jpg?stp=dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1', 'media_count': 2, 'product_type': None, 'tagged_users': None}`
Instagram accounts suggested as similar to this profile. Example: `[{'username': 'complexmusic', 'full_name': 'Complex Music'}, {'username': 'xxl', 'full_name': 'XXL'}, {'username': 'rollingloud', 'full_name': 'Rolling Loud'}, {'username': 'nojumper', 'full_name': 'No Jumper 🏀'}, {'username': 'domislivenews', 'full_name': 'DomIsLive NEWS'}, {'username': 'concert', 'full_name': 'Concert'}, {'username': 'liluzivert', 'full_name': 'Lil Uzi Vert'}, {'username': 'rapcaviar', 'full_name': 'RapCaviar'}, {'username': 'liltecca', 'full_name': 'tec'}, {'username': 'rapdirect', 'full_name': 'Rap Direct'}, {'username': 'chieffkeeffsossa', 'full_name': 'Chief Keef'}, {'username': 'asaprocky', 'full_name': 'A$AP ROCKY'}, {'username': 'redbull', 'full_name': 'Red Bull'}, {'username': 'hotnewhiphop', 'full_name': 'HotNewHipHop®'}, {'username': 'champagnepapi', 'full_name': 'champagnepapi'}, {'username': 'akademiks', 'full_name': 'DJ Akademiks'}, {'username': 'spotify', 'full_name': 'Spotify'}, {'username': 'travisscott', 'full_name': 'flame'}, {'username': 'lyricalemonade', 'full_name': 'Lyrical Lemonade'}, {'username': '21savage', 'full_name': ''}, {'username': 'genius', 'full_name': 'Genius'}, {'username': 'rapmusic', 'full_name': 'RapMusic'}, {'username': 'hotfreestyle', 'full_name': 'Hot Freestyle'}, {'username': 'hiphop', 'full_name': 'HipHop'}, {'username': 'dontoliver', 'full_name': 'DON TOLIVER'}]`
URL of the 5th most recent IGTV video
URL of the 6th most recent IGTV video
URL of the 7th most recent IGTV video
URL of the 8th most recent IGTV video
URL of the 9th most recent IGTV video
URL of the 10th most recent IGTV video
URL of the 11th most recent IGTV video
URL of the 12th most recent IGTV video
Email address found on the profile: the business email when listed, otherwise extracted from the bio. Example: `contact@example.com`
Average engagement rate: mean likes + comments across the latest posts divided by followers. Example: `0.034`
Hashtags extracted from the profile bio text. Example: `['creator', 'music']`
Unique hashtags extracted from the captions of the latest posts. Example: `['viral', 'trending', 'fyp']`
Bio text with mentions and hashtags pre-tagged as structured entities (type, text, url)
Business address listed on the profile, with city and coordinates when available
Username of the input profile this row was discovered from (Discovery Mode). Empty for profiles you submitted directly. Example: `mrbeast`
Discovery Mode expansion depth: `0` for directly submitted profiles, `1` for their related profiles, `2` for the next level, etc. Example: `1`
Additional enrichment functions enabled for this record. Example: `{}`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 31297,
"object": "result",
"squid": "0048e9be66d3be6e35ca90492af75576",
"run": "2b73b1ff538723b20a93bcd77ed1f6fd",
"profile_url": "https://www.instagram.com/rap/",
"username": "rap",
"full_name": "RapTV",
"biography": "What's Next in Hip Hop & Culture‼️\n🔋 a @lowbattery brand\n🌐 @bars @concert @drip\n⬇️Purchase RapTV's \"What A Time\" Zine",
"profile_pic_url": "https://scontent-sea1-1.cdninstagram.com/v/t51.2885-19/606497536_18573290305036669_6922238950325835238_n.jpg?stp=dst-jpg_s320x320_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QGLXYrAma8EncSqcOiqKIcHKbxVivwPqYwx_xj92YylT2fDFMMKI-V3K1wfaUNhtvQ&_nc_ohc=2lxJXKMwDVIQ7kNvwGOIvuK&_nc_gid=GbO4qzpMwEDC4wLEu3EOeQ&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_Afobuv01_l-OtINPJ-wg-xxgJlqZyMUEyjk5yy9AZcqefQ&oe=6962A8EB&_nc_sid=8b3546",
"profile_id": 1459940668,
"fbid": 17841401100062811,
"followers_count": 12747786,
"follows_count": 1607,
"posts_count": 55976,
"is_private": false,
"is_verified": true,
"is_business_account": false,
"is_professional_account": true,
"joined_recently": false,
"category": "Media/news company",
"business_email": null,
"business_phone_number": null,
"business_contact_method": "UNKNOWN",
"external_url_1": {
"url": "https://linkin.bio/raptv",
"title": "",
"lynx_url": "https://l.instagram.com/?u=https%3A%2F%2Flinkin.bio%2Fraptv&e=AT1y8V__CJ3AzWE2k-FOtdtu84FoBDS37Q5xu8e2Qwu26y5gfDH6fPjwXDM3yPFOg1_2j4HyXudJsgN_Ss8YZ0ZBXMeMZKkP",
"link_type": "external"
},
"external_url_2": {
"url": "http://whatatimezine.com",
"title": "RapTV Zine",
"lynx_url": "https://l.instagram.com/?u=http%3A%2F%2Fwhatatimezine.com%2F&e=AT3B5UMx3zD_egGreWtkNTBf8Ns1ylMOeK6w9F3TuIJjOZdXssF9nDM2MpEkBAs6H8FL9ACXPzGtY2mjq5e1lBPPCYmRh3RG",
"link_type": "external"
},
"external_url_3": {
"url": "https://teamwater.org/",
"title": "Team Water",
"lynx_url": "https://l.instagram.com/?u=https%3A%2F%2Fteamwater.org%2F&e=AT2j42otjhH4ej8VjauY1AwMkA7Enhrkkib8Fi8SqcfWMorigPVsTSohy1Wm6VHBVA684itOmoP6u2O4DTSw0Od7yBj6zz6H",
"link_type": "external"
},
"all_external_urls": [
{
"url": "https://linkin.bio/raptv",
"title": "",
"lynx_url": "https://l.instagram.com/?u=https%3A%2F%2Flinkin.bio%2Fraptv&e=AT1y8V__CJ3AzWE2k-FOtdtu84FoBDS37Q5xu8e2Qwu26y5gfDH6fPjwXDM3yPFOg1_2j4HyXudJsgN_Ss8YZ0ZBXMeMZKkP",
"link_type": "external"
},
{
"url": "http://whatatimezine.com",
"title": "RapTV Zine",
"lynx_url": "https://l.instagram.com/?u=http%3A%2F%2Fwhatatimezine.com%2F&e=AT3B5UMx3zD_egGreWtkNTBf8Ns1ylMOeK6w9F3TuIJjOZdXssF9nDM2MpEkBAs6H8FL9ACXPzGtY2mjq5e1lBPPCYmRh3RG",
"link_type": "external"
},
{
"url": "https://teamwater.org/",
"title": "Team Water",
"lynx_url": "https://l.instagram.com/?u=https%3A%2F%2Fteamwater.org%2F&e=AT2j42otjhH4ej8VjauY1AwMkA7Enhrkkib8Fi8SqcfWMorigPVsTSohy1Wm6VHBVA684itOmoP6u2O4DTSw0Od7yBj6zz6H",
"link_type": "external"
}
],
"highlight_reel_count": 9,
"igtv_video_count": 73,
"has_channel": false,
"has_clips": true,
"has_guides": false,
"latest_igtv_video_1": {
"id": "2990969497965202326",
"url": "https://www.instagram.com/reel/CmCDulcPouW/",
"likes": 53671,
"title": "",
"views": 270959,
"caption": "#SauceWalka met his biggest fan‼👀 Walka met a fan who he deeply impacted. How do y'all feel about this⁉🤔",
"comments": 458,
"duration": 87.466,
"location": null,
"posted_at": 1670771399,
"shortcode": "CmCDulcPouW",
"thumbnail_url": "https://scontent-sea5-1.cdninstagram.com/v/t51.2885-15/319123546_157570383298762_6241505073778244047_n.jpg?stp=c0.135.1080.1080a_dst-jpg_e35_s640x640_sh0.08_tt6&_nc_ht=scontent-sea5-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2QGLXYrAma8EncSqcOiqKIcHKbxVivwPqYwx_xj92YylT2fDFMMKI-V3K1wfaUNhtvQ&_nc_ohc=lp6CmfKnNQ0Q7kNvwFzF7Db&_nc_gid=GbO4qzpMwEDC4wLEu3EOeQ&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_AfqYcgvDGdlW_F8QBaiI5mFbVF1xX2nWGKMQzvWJC_3tyQ&oe=6962C607&_nc_sid=8b3546"
},
"latest_igtv_video_2": {
"id": "2893228810109674349",
"url": "https://www.instagram.com/reel/Cgm0EYYg2Nt/",
"likes": 94409,
"title": "",
"views": 498586,
"caption": "#DJKhaled trying to hit the Mega Millions for the $1 Billion cash prize. Did y'all cop a ticket⁉️ Follow @BARS for behind the scenes content‼️",
"comments": 698,
"duration": 24.7,
"location": null,
"posted_at": 1659119853,
"shortcode": "Cgm0EYYg2Nt",
"thumbnail_url": "https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/296164237_591475512329436_3321149571347964908_n.jpg?stp=c0.89.720.720a_dst-jpg_e15_s640x640_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2QGLXYrAma8EncSqcOiqKIcHKbxVivwPqYwx_xj92YylT2fDFMMKI-V3K1wfaUNhtvQ&_nc_ohc=HyQoqdl3TdMQ7kNvwGuat83&_nc_gid=GbO4qzpMwEDC4wLEu3EOeQ&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_AfoHCA3EKBDke63AjLJrvy-vx8d30TB2Coq5jcNOP8o10g&oe=6962AB6D&_nc_sid=8b3546"
},
"latest_igtv_video_3": {
"id": "2893131765138890716",
"url": "https://www.instagram.com/reel/CgmeAMNgJ_c/",
"likes": 215238,
"title": "",
"views": 915592,
"caption": "Will Smith just released a 5 minute video addressing him slapping Chris Rock, as well as apologizing to him and his family‼️😳",
"comments": 1610,
"duration": 50.366,
"location": null,
"posted_at": 1659108234,
"shortcode": "CgmeAMNgJ_c",
"thumbnail_url": "https://scontent-sea5-1.cdninstagram.com/v/t51.2885-15/296436953_3345570412396450_1515402937347091776_n.jpg?stp=c0.89.720.720a_dst-jpg_e15_s640x640_tt6&_nc_ht=scontent-sea5-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2QGLXYrAma8EncSqcOiqKIcHKbxVivwPqYwx_xj92YylT2fDFMMKI-V3K1wfaUNhtvQ&_nc_ohc=aH7BIxYEE-0Q7kNvwHOWlsc&_nc_gid=GbO4qzpMwEDC4wLEu3EOeQ&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_Afp5Oa4gBnJH62Oe4W3grJHD7jWOJQ-Z2Qjq2LRE6LSRcw&oe=6962DDDD&_nc_sid=8b3546"
},
"latest_igtv_video_4": {
"id": "2892870456929653049",
"url": "https://www.instagram.com/reel/Cglilp-g5E5/",
"likes": 52183,
"title": "",
"views": 284444,
"caption": "#Drake kicking off his October World Weekend concert. Y'all rockin with it⁉️ Follow @concert for more‼️ 🎥 @complexcanada",
"comments": 274,
"duration": 56.366,
"location": null,
"posted_at": 1659077276,
"shortcode": "Cglilp-g5E5",
"thumbnail_url": "https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/295911941_722017562193368_4950961007415968397_n.jpg?stp=c0.89.720.720a_dst-jpg_e15_s640x640_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2QGLXYrAma8EncSqcOiqKIcHKbxVivwPqYwx_xj92YylT2fDFMMKI-V3K1wfaUNhtvQ&_nc_ohc=HDeXsVapBBwQ7kNvwEgm58o&_nc_gid=GbO4qzpMwEDC4wLEu3EOeQ&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_AfqhhjUn-99-pPay_mtQ9OZi-JlWz58vJv3tC0OI5KgxuA&oe=6962B740&_nc_sid=8b3546"
},
"latest_post_1": {
"id": "3781759654318683349",
"url": "https://www.instagram.com/p/DR7gl51kbTV/",
"type": "GraphSidecar",
"likes": 66646,
"views": null,
"caption": "The #RapTV Power Rankings for November 2025 have been revealed‼️🔥 Click the link in bio to see why these artists made the cut 👀",
"comments": 650,
"is_video": false,
"location": null,
"posted_at": 1765040903,
"shortcode": "DR7gl51kbTV",
"audio_info": null,
"dimensions": {
"width": 1080,
"height": 1346
},
"display_url": "https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/591164148_18569581537036669_7700805801646043012_n.jpg?stp=dst-jpg_e35_p1080x1080_sh0.08_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=101",
"media_count": 3,
"product_type": null,
"tagged_users": null
},
"latest_post_2": {
"id": "3781084211714274896",
"url": "https://www.instagram.com/p/DR5HA65ETZQ/",
"type": "GraphSidecar",
"likes": 44670,
"views": null,
"caption": "Hit the link in bio to find out more about our Next-Up Class of 2025‼️ Y'all rockin' with any of them already⁉️",
"comments": 707,
"is_video": false,
"location": null,
"posted_at": 1764960384,
"shortcode": "DR5HA65ETZQ",
"audio_info": null,
"dimensions": {
"width": 1080,
"height": 1350
},
"display_url": "https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/591144857_18569396479036669_6331524991528286918_n.jpg?stp=dst-jpg_e15_fr_p1080x1080_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=101",
"media_count": 18,
"product_type": null,
"tagged_users": [
{
"id": "3259531369",
"username": "paymeskrilla",
"full_name": "Skrilla🦴🐾🦴🐾",
"is_verified": true
},
{
"id": "7499114046",
"username": "hurricane.wisdom",
"full_name": "Wisdom🐢🇳🇬",
"is_verified": true
}
]
},
"latest_post_3": {
"id": "3744292296867999545",
"url": "https://www.instagram.com/p/DP2ZgGCDG85/",
"type": "GraphVideo",
"likes": 541957,
"views": 3056279,
"caption": "KODAK BLACK MEDIA DAY EP 1‼️ Full freestyle @ link in bio 🎙️",
"comments": 13675,
"is_video": true,
"location": null,
"posted_at": 1760574556,
"shortcode": "DP2ZgGCDG85",
"audio_info": {
"audio_id": "1525594238568663",
"song_name": "Original audio",
"artist_name": "rap",
"uses_original_audio": true
},
"dimensions": {
"width": 640,
"height": 1136
},
"display_url": "https://scontent-sea5-1.cdninstagram.com/v/t51.2885-15/566773246_1340921630964055_2651647205854198667_n.jpg?stp=dst-jpg_e15_tt6&_nc_ht=scontent-sea5-1.cdninstagram.com&_nc_cat=107",
"media_count": null,
"product_type": "clips",
"tagged_users": [
{
"id": "192197495",
"username": "kodakblack",
"full_name": "Bill Russell",
"is_verified": true
}
]
},
"latest_post_4": {
"id": "3803885781283408912",
"url": "https://www.instagram.com/p/DTKHfbXjowQ/",
"type": "GraphSidecar",
"likes": 23457,
"views": null,
"caption": "We got two highly anticipated albums dropping this month‼️💿 Which one are y'all most excited for⁉️🤔 'BULLY' by #Ye OR 'DON'T BE DUMB' by #ASAPRocky Let us know down below‼️👇",
"comments": 413,
"is_video": false,
"location": null,
"posted_at": 1767678543,
"shortcode": "DTKHfbXjowQ",
"audio_info": null,
"dimensions": {
"width": 1080,
"height": 1346
},
"display_url": "https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/610800578_18575383822036669_370893365218059988_n.jpg?stp=dst-jpg_e15_fr_p1080x1080_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1",
"media_count": 3,
"product_type": null,
"tagged_users": null
},
"latest_post_5": {
"id": "3803871417327293855",
"url": "https://www.instagram.com/p/DTKEOZ5DhWf/",
"type": "GraphSidecar",
"likes": 46127,
"views": null,
"caption": "#Rakai is now unbanned on Twitch and he celebrated by being uncuffed by the police‼️🚨 Y'all happy to see Rakai back⁉️🤔",
"comments": 290,
"is_video": false,
"location": null,
"posted_at": 1767676830,
"shortcode": "DTKEOZ5DhWf",
"audio_info": null,
"dimensions": {
"width": 1080,
"height": 1346
},
"display_url": "https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/609252800_18575380657036669_7913948580798256570_n.jpg?stp=dst-jpg_e35_p1080x1080_sh0.08_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1",
"media_count": 2,
"product_type": null,
"tagged_users": null
},
"latest_post_6": {
"id": "3803836179947474913",
"url": "https://www.instagram.com/p/DTJ8NohjE_h/",
"type": "GraphSidecar",
"likes": 20362,
"views": null,
"caption": "Mugshots from #ASAPRocky's \"Punk Rocky\" video‼️🎥",
"comments": 96,
"is_video": false,
"location": null,
"posted_at": 1767672630,
"shortcode": "DTJ8NohjE_h",
"audio_info": null,
"dimensions": {
"width": 1080,
"height": 1346
},
"display_url": "https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/611342679_18575373289036669_125946305517673975_n.jpg?stp=dst-jpg_e35_p1080x1080_sh0.08_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1",
"media_count": 10,
"product_type": null,
"tagged_users": null
},
"latest_post_7": {
"id": "3803789983816098876",
"url": "https://www.instagram.com/p/DTJxtZBjCQ8/",
"type": "GraphSidecar",
"likes": 21184,
"views": null,
"caption": "#Ye has earned over 60 BILLION STREAMS on Spotify‼️🤯 He is now the 4th most streamed rapper of all time on the platform 🔥 What Ye album have y'all streamed the most⁉️🤔 📸: @timmy.ty",
"comments": 197,
"is_video": false,
"location": null,
"posted_at": 1767667123,
"shortcode": "DTJxtZBjCQ8",
"audio_info": null,
"dimensions": {
"width": 1080,
"height": 1346
},
"display_url": "https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/610712728_18575364046036669_6623987188310692834_n.jpg?stp=dst-jpg_e15_fr_p1080x1080_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1",
"media_count": 8,
"product_type": null,
"tagged_users": null
},
"latest_post_8": {
"id": "3803760123928907245",
"url": "https://www.instagram.com/p/DTJq631lA3t/",
"type": "GraphSidecar",
"likes": 41045,
"views": null,
"caption": "Lil Durk's murder-for-hire trial has been delayed until the spring. On Monday (Jan. 5), Judge Michael W. Fitzgerald approved a request to continue the trial, which had been set to begin on Jan. 20. The trial for Lil Durk and his five co-defendants is now scheduled to start on May 4, with a pretrial conference set for April 13.",
"comments": 625,
"is_video": false,
"location": null,
"posted_at": 1767663563,
"shortcode": "DTJq631lA3t",
"audio_info": null,
"dimensions": {
"width": 1080,
"height": 1346
},
"display_url": "https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/611616486_18575357614036669_7266703784068993426_n.jpg?stp=dst-jpg_e15_fr_p1080x1080_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1",
"media_count": 5,
"product_type": null,
"tagged_users": null
},
"latest_post_9": {
"id": "3803736848142182312",
"url": "https://www.instagram.com/p/DTJloKklCeo/",
"type": "GraphSidecar",
"likes": 31972,
"views": null,
"caption": "#KyrieIrving bought #LaRussell's album for $11,000‼️🤯 LaRussell spoke on him waking up and seeing Kyrie's purchase of $11k and he also got a call for Kyrie giving him his flowers🙏 Y'all rockin' with this⁉️🤔",
"comments": 173,
"is_video": false,
"location": null,
"posted_at": 1767660789,
"shortcode": "DTJloKklCeo",
"audio_info": null,
"dimensions": {
"width": 1080,
"height": 1346
},
"display_url": "https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/611249600_18575352745036669_3312886124186420117_n.jpg?stp=dst-jpg_e15_fr_p1080x1080_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1",
"media_count": 3,
"product_type": null,
"tagged_users": null
},
"latest_post_10": {
"id": "3803703253754789563",
"url": "https://www.instagram.com/p/DTJd_TXDT67/",
"type": "GraphVideo",
"likes": 13415,
"views": 64782,
"caption": "#ASAPRocky dropped his first single from 'DON'T BE DUMB' called \"Punk Rocky\"‼️🔥 Y'all rockin' with the visuals⁉️🤔",
"comments": 240,
"is_video": true,
"location": null,
"posted_at": 1767656794,
"shortcode": "DTJd_TXDT67",
"audio_info": {
"audio_id": "728255996960884",
"song_name": "Punk Rocky",
"artist_name": "A$AP Rocky",
"uses_original_audio": false
},
"dimensions": {
"width": 750,
"height": 1333
},
"display_url": "https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/610835983_18575382973036669_6434301582458044265_n.jpg?stp=dst-jpg_e15_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=101",
"media_count": null,
"product_type": "clips",
"tagged_users": null
},
"latest_post_11": {
"id": "3803681281365293389",
"url": "https://www.instagram.com/p/DTJY_j-lLlN/",
"type": "GraphImage",
"likes": 52009,
"views": null,
"caption": "A new study shows that women tend to pack almost twice as much as they need, bringing around 60 clothing items for a week-long trip when only about 34 are actually used‼️👀 According to a survey conducted by a travel insurance company, 72% of female travelers admit they overpack. Nearly two-thirds say they struggle to zip their suitcases, and 58% end up going over airline weight limits.",
"comments": 235,
"is_video": false,
"location": null,
"posted_at": 1767654164,
"shortcode": "DTJY_j-lLlN",
"audio_info": null,
"dimensions": {
"width": 1080,
"height": 1346
},
"display_url": "https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/611208025_18575338294036669_1164335797954634545_n.jpg?stp=dst-jpg_e35_p1080x1080_sh0.08_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1",
"media_count": null,
"product_type": null,
"tagged_users": null
},
"latest_post_12": {
"id": "3803615212940314915",
"url": "https://www.instagram.com/p/DTJJ-I9lEkj/",
"type": "GraphSidecar",
"likes": 66770,
"views": null,
"caption": "➡️Swipe to see the inspiration behind A$AP Rocky's new single art‼️ Rocky's cover art for \"Punk Rocky\" is seemingly inspired by PaRappa The Rappa, a classic PS1 game. PaRappa the Rapper is a rhythm game in which the main character, PaRappa, must make his way through each of the game's six stages by rapping. Rocky parallels the iconic game's cover in his new cover art. Y'all rockin' with it⁉️",
"comments": 295,
"is_video": false,
"location": null,
"posted_at": 1767646288,
"shortcode": "DTJJ-I9lEkj",
"audio_info": null,
"dimensions": {
"width": 1080,
"height": 1080
},
"display_url": "https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/612182407_18575318113036669_3435325046338182668_n.jpg?stp=dst-jpg_e35_s1080x1080_sh0.08_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1",
"media_count": 2,
"product_type": null,
"tagged_users": null
},
"related_profiles": [
{
"id": "24164178",
"username": "complexmusic",
"full_name": "Complex Music",
"is_private": false,
"is_verified": true,
"profile_pic_url": "https://scontent-sea1-1.cdninstagram.com/v/t51.2885-19/458251094_1219124509241820_8098616880837981487_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QG&_nc_ohc=x&oh=00&oe=6962A8EB&_nc_sid=8b3546"
},
{
"id": "9165072",
"username": "xxl",
"full_name": "XXL",
"is_private": false,
"is_verified": true,
"profile_pic_url": "https://scontent-sea1-1.cdninstagram.com/v/t51.2885-19/447619133_1152586032425394_1136398907624324613_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QG&_nc_ohc=x&oh=00&oe=6962A8EB&_nc_sid=8b3546"
},
{
"id": "1454869140",
"username": "rollingloud",
"full_name": "Rolling Loud",
"is_private": false,
"is_verified": true,
"profile_pic_url": "https://scontent-sea1-1.cdninstagram.com/v/t51.2885-19/462520417_1207677690461544_5822097494037038823_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QG&_nc_ohc=x&oh=00&oe=6962A8EB&_nc_sid=8b3546"
},
{
"id": "1288319767",
"username": "nojumper",
"full_name": "No Jumper 🏀",
"is_private": false,
"is_verified": true,
"profile_pic_url": "https://scontent-sea1-1.cdninstagram.com/v/t51.2885-19/438159727_780985250595958_7902879122942327355_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QG&_nc_ohc=x&oh=00&oe=6962A8EB&_nc_sid=8b3546"
}
],
"latest_igtv_video_5": {
"id": "2892870456929653049",
"url": "https://www.instagram.com/reel/Cglilp-g5E9/",
"likes": 48211,
"title": "",
"views": 261034,
"caption": "#Rap moments that defined the culture this year‼️",
"comments": 233,
"duration": 44.3,
"location": null,
"posted_at": 1658977276,
"shortcode": "Cglilp-g5E9",
"thumbnail_url": "https://scontent-sea1-1.cdninstagram.com/v/t51.2885-15/295911941_722017562193368_4950961007415968397_n.jpg?stp=c0.89.720.720a_dst-jpg_e15_s640x640_tt6&_nc_ht=scontent-sea1-1.cdninstagram.com&_nc_cat=108"
},
"latest_igtv_video_6": null,
"latest_igtv_video_7": null,
"latest_igtv_video_8": null,
"latest_igtv_video_9": null,
"latest_igtv_video_10": null,
"latest_igtv_video_11": null,
"latest_igtv_video_12": null,
"email_address": "michelle@nowfluence.co",
"avg_engagement": 0.005141,
"bio_hashtags": [
"ghostlifestyle"
],
"post_hashtags": [
"RapTV",
"Ye",
"ASAPRocky",
"Rakai",
"KyrieIrving",
"LaRussell"
],
"biography_with_entities": {
"raw_text": "rebel against the status quo\n#ghostlifestyle\n@ghostenergy \n@ghosthydration \n@ghostlifestyleapparel \n@ghostgamer \n@ghostwellness",
"entities": [
{
"user": null,
"hashtag": {
"name": "ghostlifestyle"
}
},
{
"user": {
"username": "ghostenergy"
},
"hashtag": null
}
]
},
"business_address": {
"city_name": "New York, New York",
"city_id": 108424279189115,
"latitude": 40.7142,
"longitude": -74.0064,
"street_address": null,
"zip_code": null
},
"discovered_from": null,
"hop_depth": 0,
"functions": null,
"native_id": 31297
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/instagram-profile-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Instagram Profile Scraper settings
Configure your Instagram Profile Scraper squid settings. Control the maximum number of profiles collected per task and across the entire run.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_results** | integer | unlimited | Maximum number of profiles to collect per task |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum number of unique results retrieved across all tasks in the entire run |
| **discovery\_mode** | boolean | false | Expand from your input profiles: after scraping each profile, the crawler also scrapes its `related_profiles`. Use `hop_depth` and `discovered_from` in results to trace the expansion path |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Leave limits empty or null for unlimited collection.
Use `max_unique_results_per_run` to set a hard cap on total profiles when processing large batches.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Instagram Profile Scraper (1)",
"concurrency": 5,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 100,
"max_unique_results_per_run": 1000
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Update squid settings
payload = {
"name": "Instagram Profile Scraper (1)",
"concurrency": 5,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_results": 100, # Max profiles per task
"max_unique_results_per_run": 1000 # Total unique profiles limit
}
}
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json=payload
)
print(f"Settings updated: {response.json()['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Instagram Profile Scraper (1)",
"concurrency": 5,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 100,
"max_unique_results_per_run": 1000
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/instagram-reels-scraper/add-tasks
POST https://api.lobstr.io/v2/squid/{squid_id}/task
Add Instagram reel URLs or profile URLs to scrape reels using the lobstr.io API
Add Instagram URLs as tasks to your squid. You can provide either a direct reel URL to scrape a specific reel, or a profile URL to collect all reels from that profile.
Crawler ID: `4aad3ef0de6a5cea65b48dd575531a8c`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Supported URL Formats
**Direct Reel URL:**
`https://www.instagram.com/reel/ABC123xyz/`
**Profile URL (collects all reels from profile):**
`https://www.instagram.com/username/`
**Post URL:**
`https://www.instagram.com/p/ABC123xyz/`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **url** | string | Yes | Instagram Reel URL or Profile URL. If a profile URL is given, the scraper will collect reels from that profile. |
Use profile URLs to bulk collect all reels from a creator's account in one task.
When scraping a profile, use `max_results` setting to limit how many reels are collected per profile.
Both `instagram.com` and `www.instagram.com` URL formats are supported.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/api/v2/squid/YOUR_SQUID_ID/task" \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.instagram.com/leomessi/"
}'
```
```python Python theme={null}
import requests
API_TOKEN = "YOUR_API_TOKEN"
SQUID_ID = "YOUR_SQUID_ID"
url = f"https://api.lobstr.io/api/v2/squid/{SQUID_ID}/task"
headers = {
"Authorization": f"Token {API_TOKEN}",
"Content-Type": "application/json"
}
data = {
"url": "https://www.instagram.com/leomessi/"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
```
## Response
```json 200 theme={null}
{
"id": "task_abc123def456",
"status": "pending",
"created_at": "2025-01-15T10:30:00Z",
"url": "https://www.instagram.com/leomessi/"
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/instagram-reels-scraper/credit-cost
Credit cost for the Instagram Reels Scraper
1 credit per reel.
# Get Results
Source: https://docs.lobstr.io/examples/instagram-reels-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Instagram Reels Scraper
Retrieve scraped data from your **Instagram Reels Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique identifier for the Instagram reel. Example: `3650696636256953349`
Shortcode used in the reel URL (e.g. instagram.com/reel/\[shortcode]). Example: `DKp4T-azyQF`
Direct URL to the Instagram reel. Example: `https://www.instagram.com/reel/DKp4T-azyQF/`
Instagram username of the reel author. Example: `mia_momsy`
Display name of the reel author on Instagram. Example: `Mia B`
Unique Instagram identifier of the reel author. Example: `63666136412`
Number of likes the reel received. Example: `12760`
Number of comments on the reel. Example: `84`
Total number of views the reel has accumulated. Example: `358030`
List of hashtags used in the reel caption. Example: `MacaroozMoments, PicnicWithMyMini, SweetestBond, macarooz, costco, mommyandme, macpops, sweet, decoration, picnic, picnicideas`
Instagram accounts mentioned in the reel caption. Example: `macarooz`
Instagram users tagged in the reel. Example: `[{'id': '1312299431', 'username': 'macarooz', 'full_name': 'Macarooz®', 'is_verified': True, 'profile_pic_url': 'https://scontent-sea5-1.cdninstagram.com/v/t51.2885-19/206341770_571610920891491_4020524377560378841_n.jpg'}]`
Instagram product type (e.g. CLIPS). Example: `clips`
Unix timestamp of when the reel was published. Example: `2025-06-08T19:12:15+00:00`
Caption text of the reel. Example: \`Sunshine, snuggles & yellow mac pops 💛🍋 A little mommy & me picnic never looked so sweet
@macarooz mac pops are at COSTCO now! Go grab yours! 💕
\#MacaroozMoments #PicnicWithMyMini #SweetestBond #macarooz #costco #mommyandme #macpops #sweet #decoration #picnic #picnicideas\`
Direct URL to the reel video file. Example: `https://scontent-sea5-1.cdninstagram.com/o1/v/t2/f2/m367/AQMmxqutkTZA2QUIaPBLi68o1kI6GUiSzPRdvqQsEQDQKm5j12ie-8Xrtq4R-BjuabXoN7scoeVCtMThpD0vOJR_vNNXyRhPy4kOjQ8.mp4`
URL of the reel's cover or thumbnail image. Example: `https://scontent-sea5-1.cdninstagram.com/v/t51.2885-15/503516494_17911972110120413_6769091293526442063_n.jpg`
Duration of the reel video in seconds. Example: `29`
Details of the music track used in the reel. Example: `{'audio_id': '2048642388993989', 'song_name': 'Original audio', 'artist_name': 'mia_momsy', 'is_explicit': False, 'is_trending': False, 'should_mute_audio': False, 'uses_original_audio': True, 'should_mute_audio_reason': ''}`
Internal identifier for the location tagged in the reel. Example: `212983635`
Name of the location tagged in the reel. Example: `San Diego, California`
Whether the reel is marked as a sponsored post. Example: `false`
Whether the reel is pinned to the top of the author's Instagram profile. Example: `false`
Whether comments are disabled on the reel. Example: `false`
Whether like and view counts are hidden on the reel. Example: `false`
Whether the current viewer is allowed to reshare the reel. Example: `true`
Instagram accounts listed as co-authors of the reel. Example: `['macarooz']`
Width and height of the reel video in pixels. Example: `1080x1920`
Additional enrichment functions enabled for this record. Example: `{}`
Text content of the 1st comment on the reel. Example: `{'text': "It looks very delicious, and the fact that it's gluten-free is great. Wishing you a fun time 😍", 'user': 'dygu.ylldrm', 'replies_count': 1}`
Text content of the 2nd comment on the reel. Example: `{'text': 'This is absolutely adorable! The sunshine, those sweet snuggles, and the mac pops — total picnic goals!😍', 'user': 'daisy.diarys', 'replies_count': 1}`
Text content of the 3rd comment on the reel. Example: `{'text': '🍰🥂 Totally adding them to my summer bucket list', 'user': 'chloecollabs', 'replies_count': 1}`
Text content of the 4th comment on the reel. Example: `{'text': 'In every costco😮😍😍 I will try on my next shopping🙌', 'user': 'ugc_nazz', 'replies_count': 0}`
Text content of the 5th comment on the reel. Example: `{'text': "Ohh, these are my son's absolute favorites enjoy! They look so delicious!😍😍😍", 'user': 'lifestylegizem', 'replies_count': 1}`
Text content of the 6th comment on the reel. Example: `{'text': 'Okay but why does this look like the softest cake ever?! 😍', 'user': 'cansuchloe', 'replies_count': 1}`
Text content of the 7th comment on the reel. Example: `{'text': 'Looks great outdoors 🙌 I want to try it right away 😍😍', 'user': 'kadriyekacagan', 'replies_count': 1}`
Text content of the 8th comment on the reel. Example: `{'text': 'So adorable!!', 'user': 'theglutenfreetravelers', 'replies_count': 1}`
Text content of the 9th comment on the reel. Example: `{'text': "I haven't try it before. Absolutely perfect 👏", 'user': 'es_erensenar', 'replies_count': 1}`
Text content of the 10th comment on the reel. Example: `{'text': 'Wow the atmosphere is amazing ❤️ I love Mac pop, I will definitely try it 🥰❤️', 'user': 'amerikadabirturkanne', 'replies_count': 1}`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 86888,
"object": "result",
"squid": "8f0b702690c26f81f50196a62366913d",
"run": "fb04953c7a87fe349cfc7a254c6ec77d",
"reel_id": "3650696636256953349",
"shortcode": "DKp4T-azyQF",
"reel_url": "https://www.instagram.com/reel/DKp4T-azyQF/",
"owner_username": "mia_momsy",
"owner_full_name": "Mia B",
"owner_id": "63666136412",
"likes_count": 12760,
"comments_count": 84,
"views_count": 358030,
"hashtags": "MacaroozMoments, PicnicWithMyMini, SweetestBond, macarooz, costco, mommyandme, macpops, sweet, decoration, picnic, picnicideas",
"mentions": "macarooz",
"tagged_users": [
{
"id": "1312299431",
"username": "macarooz",
"full_name": "Macarooz®",
"is_verified": true,
"profile_pic_url": "https://scontent-sea5-1.cdninstagram.com/v/t51.2885-19/206341770_571610920891491_4020524377560378841_n.jpg"
}
],
"product_type": "clips",
"timestamp": "2025-06-08T19:12:15+00:00",
"caption": "Sunshine, snuggles & yellow mac pops 💛🍋 A little mommy & me picnic never looked so sweet\n\n@macarooz mac pops are at COSTCO now! Go grab yours! 💕\n\n#MacaroozMoments #PicnicWithMyMini #SweetestBond #macarooz #costco #mommyandme #macpops #sweet #decoration #picnic #picnicideas",
"video_url": "https://scontent-sea5-1.cdninstagram.com/o1/v/t2/f2/m367/AQMmxqutkTZA2QUIaPBLi68o1kI6GUiSzPRdvqQsEQDQKm5j12ie-8Xrtq4R-BjuabXoN7scoeVCtMThpD0vOJR_vNNXyRhPy4kOjQ8.mp4",
"display_url": "https://scontent-sea5-1.cdninstagram.com/v/t51.2885-15/503516494_17911972110120413_6769091293526442063_n.jpg",
"video_duration_seconds": 29,
"music_info": {
"audio_id": "2048642388993989",
"song_name": "Original audio",
"artist_name": "mia_momsy",
"is_explicit": false,
"is_trending": false,
"should_mute_audio": false,
"uses_original_audio": true,
"should_mute_audio_reason": ""
},
"location_id": "212983635",
"location_name": "San Diego, California",
"is_sponsored": false,
"is_pinned": false,
"comments_disabled": false,
"like_and_view_counts_disabled": false,
"can_viewer_reshare": true,
"co_authors": [
"macarooz"
],
"media_dimensions": "1080x1920",
"functions": null,
"comment1": {
"text": "It looks very delicious, and the fact that it's gluten-free is great. Wishing you a fun time 😍",
"user": "dygu.ylldrm",
"replies_count": 1
},
"comment2": {
"text": "This is absolutely adorable! The sunshine, those sweet snuggles, and the mac pops — total picnic goals!😍",
"user": "daisy.diarys",
"replies_count": 1
},
"comment3": {
"text": "🍰🥂 Totally adding them to my summer bucket list",
"user": "chloecollabs",
"replies_count": 1
},
"comment4": {
"text": "In every costco😮😍😍 I will try on my next shopping🙌",
"user": "ugc_nazz",
"replies_count": 0
},
"comment5": {
"text": "Ohh, these are my son's absolute favorites enjoy! They look so delicious!😍😍😍",
"user": "lifestylegizem",
"replies_count": 1
},
"comment6": {
"text": "Okay but why does this look like the softest cake ever?! 😍",
"user": "cansuchloe",
"replies_count": 1
},
"comment7": {
"text": "Looks great outdoors 🙌 I want to try it right away 😍😍",
"user": "kadriyekacagan",
"replies_count": 1
},
"comment8": {
"text": "So adorable!!",
"user": "theglutenfreetravelers",
"replies_count": 1
},
"comment9": {
"text": "I haven't try it before. Absolutely perfect 👏",
"user": "es_erensenar",
"replies_count": 1
},
"comment10": {
"text": "Wow the atmosphere is amazing ❤️ I love Mac pop, I will definitely try it 🥰❤️",
"user": "amerikadabirturkanne",
"replies_count": 1
},
"native_id": 86888
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/instagram-reels-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Instagram Reels Scraper settings including result limits
Configure your Instagram Reels Scraper squid settings. Control the maximum number of reels collected per task and across the entire run.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_results** | integer | unlimited | Maximum number of reels to collect per task (profile) |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum number of unique results retrieved across all tasks in the entire run |
| **fetch\_since** | string | null | Stop scraping when items older than this threshold are reached (based on `published_at`). Use a relative duration (24h, 7d, 2w) or an absolute date (YYYY-MM-DD HH:MM:SS) |
| **fetch\_since\_timezone** | string | null | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Only applies when `fetch_since` is an absolute date — ignored for relative values like `24h` or `7d`. See [supported timezones](/docs/timezones). |
| **skip\_pinned\_reels** | boolean | false | If enabled, pinned reels will be excluded from the results |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
## Understanding Limits
**max\_results**: Limits reels collected from each profile URL. Useful when scraping multiple creator profiles.
**max\_unique\_results\_per\_run**: Global limit across all tasks. The scraper stops once this total is reached, regardless of individual task limits.
Set `max_results` to 50-100 when scraping multiple profiles to get a representative sample from each.
Leave limits empty or null for unlimited collection.
Large profiles can have thousands of reels. Set appropriate limits to control costs and processing time.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Instagram Reels Scraper (1)",
"concurrency": 5,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 50,
"max_unique_results_per_run": 500,
"fetch_since": "7d",
"skip_pinned_reels": false
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Update squid settings
payload = {
"name": "Instagram Reels Scraper (1)",
"concurrency": 5,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_results": 50,
"max_unique_results_per_run": 500,
"fetch_since": "7d",
"skip_pinned_reels": False
}
}
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json=payload
)
print(f"Settings updated: {response.json()['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Instagram Reels Scraper (1)",
"concurrency": 5,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 50,
"max_unique_results_per_run": 500,
"fetch_since": "7d",
"skip_pinned_reels": false
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/lacentrale-cars-scraper/add-tasks
POST https://api.lobstr.io/v2/squid/{squid_id}/task
Add LaCentrale search URLs to scrape vehicle listings using the lobstr.io API
Add LaCentrale search or listing URLs as tasks to your squid. The scraper will extract all vehicle listings matching your search criteria from the French automotive marketplace.
Crawler ID: `665c260fd9139121a4530d23b35b26db`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## URL Format
Use LaCentrale listing URLs with your desired search filters:
`https://www.lacentrale.fr/listing?yearMin=2025`
`https://www.lacentrale.fr/listing?makesModelsCommercialNames=PEUGEOT`
Build your search on lacentrale.fr with filters (make, model, year, price, etc.) and copy the URL.
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **url** | string | Yes | LaCentrale search or category URL |
Apply filters on lacentrale.fr (make, model, year, price range, location) to target specific vehicle segments.
LaCentrale limits search results to 347 pages maximum per URL. Use multiple filtered searches for comprehensive coverage.
Use the `fetch_since` setting to only scrape recently added listings for monitoring new inventory.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/api/v2/squid/YOUR_SQUID_ID/task" \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.lacentrale.fr/listing?yearMin=2024&makesModelsCommercialNames=PEUGEOT"
}'
```
```python Python theme={null}
import requests
API_TOKEN = "YOUR_API_TOKEN"
SQUID_ID = "YOUR_SQUID_ID"
url = f"https://api.lobstr.io/api/v2/squid/{SQUID_ID}/task"
headers = {
"Authorization": f"Token {API_TOKEN}",
"Content-Type": "application/json"
}
data = {
"url": "https://www.lacentrale.fr/listing?yearMin=2024&makesModelsCommercialNames=PEUGEOT"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
```
## Response
```json 200 theme={null}
{
"id": "task_abc123def456",
"status": "pending",
"created_at": "2025-01-15T10:30:00Z",
"url": "https://www.lacentrale.fr/listing?yearMin=2024&makesModelsCommercialNames=PEUGEOT"
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/lacentrale-cars-scraper/credit-cost
Credit cost for the LaCentrale Cars Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Cars | 1 | 1 credit per car. |
| Get Listing Details | 4 | 4 credit per listing. |
# Get Results
Source: https://docs.lobstr.io/examples/lacentrale-cars-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from LaCentrale Cars Scraper
Retrieve scraped data from your **LaCentrale Cars Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Reference identifier. Example: `E118586883`
Listing URL. Example: `https://www.lacentrale.fr/auto-occasion-annonce-69118586883.html`
Price. Example: `154990.0`
Teaser financing price
Photo URL. Example: `https://image-annonce.lacentrale.fr/1096x829/E118586883_STANDARD_0.jpg`
Mobile photo URLs. Example: `['https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_0.jpg?format=webp&size=285x214&watermark=lc&signature=639071adacd9528c215e8872ccb22969a1a7e6ac2b3a853bb4d2d935', 'https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_1.jpg?format=webp&size=140x105&watermark=lc&signature=a7aec3d26decefda5cf888170c580e86bd6bcca67f2d779a39eddf4d', 'https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_2.jpg?format=webp&size=140x105&watermark=lc&signature=a7aec3d26decefda5cf888170c580e86bd6bcca67f2d779a39eddf4d']`
Number of pictures. Example: `17`
Date of picture count update. Example: `2026-03-21T14:56:09`
Vehicle make or brand. Example: `PORSCHE`
Vehicle model. Example: `911`
Detailed model name. Example: `PORSCHE 911 TYPE 992`
Commercial name. Example: `911 TYPE 992`
Vehicle version or trim. Example: `(992) COUPE 3.0 385 CARRERA BVA7`
Trim level. Example: `CARRERA`
Engine or motorization type. Example: `3.0 385`
Vehicle year. Example: `2024`
Vehicle mileage. Example: `10930`
Energy or fuel type. Example: `ESSENCE`
Gearbox type. Example: `AUTO`
Number of doors. Example: `2`
Category. Example: `COUPE`
Vehicle family or range. Example: `AUTO`
Exterior colour. Example: `gris`
Customer type. Example: `PRO`
Customer reference. Example: `C060750`
Customer family code. Example: `INTERMEDIAIRE`
Contact person name. Example: `MOTORSPORT BY TB`
Displayed phone number. Example: `33451127621`
Country. Example: `FR`
Place visited. Example: `06`
Distance in kilometres
Whether delivery is available. Example: `true`
Available delivery price options. Example: `[0, 100, 200, 300, 500]`
Whether item can be delivered. Example: `false`
Delivery price
Whether item is new. Example: `true`
360° exterior photos. Example: `false`
Photosphere images. Example: `false`
All photo URLs. Example: `['https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_0.jpg?fit=inside&format=webp&lastUpdated=1774104969&size=1096x829&signature=b23a53dca5f7fcf80bfa584cab3fddd7e753a04fdd4f46e3908225af', 'https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_1.jpg?fit=inside&format=webp&lastUpdated=1774104969&size=1096x829&signature=b23a53dca5f7fcf80bfa584cab3fddd7e753a04fdd4f46e3908225af', 'https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_10.jpg?fit=inside&format=webp&lastUpdated=1774104968&size=1096x829&signature=3e4537d3acd8c3cc01c95f419c1a3a9706acbe80ac1b609fa95aa8bb', 'https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_11.jpg?fit=inside&format=webp&lastUpdated=1774104969&size=1096x829&signature=b23a53dca5f7fcf80bfa584cab3fddd7e753a04fdd4f46e3908225af', 'https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_2.jpg?fit=inside&format=webp&lastUpdated=1774104969&size=1096x829&signature=b23a53dca5f7fcf80bfa584cab3fddd7e753a04fdd4f46e3908225af', 'https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_3.jpg?fit=inside&format=webp&lastUpdated=1774104969&size=1096x829&signature=b23a53dca5f7fcf80bfa584cab3fddd7e753a04fdd4f46e3908225af', 'https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_12.jpg?fit=inside&format=webp&lastUpdated=1774104969&size=1096x829&signature=b23a53dca5f7fcf80bfa584cab3fddd7e753a04fdd4f46e3908225af', 'https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_4.jpg?fit=inside&format=webp&lastUpdated=1774104969&size=1096x829&signature=b23a53dca5f7fcf80bfa584cab3fddd7e753a04fdd4f46e3908225af', 'https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_9.jpg?fit=inside&format=webp&lastUpdated=1774104968&size=1096x829&signature=3e4537d3acd8c3cc01c95f419c1a3a9706acbe80ac1b609fa95aa8bb', 'https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_5.jpg?fit=inside&format=webp&lastUpdated=1774104969&size=1096x829&signature=b23a53dca5f7fcf80bfa584cab3fddd7e753a04fdd4f46e3908225af', 'https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_6.jpg?fit=inside&format=webp&lastUpdated=1774104968&size=1096x829&signature=3e4537d3acd8c3cc01c95f419c1a3a9706acbe80ac1b609fa95aa8bb', 'https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_7.jpg?fit=inside&format=webp&lastUpdated=1774104968&size=1096x829&signature=3e4537d3acd8c3cc01c95f419c1a3a9706acbe80ac1b609fa95aa8bb', 'https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_13.jpg?fit=inside&format=webp&lastUpdated=1774104969&size=1096x829&signature=b23a53dca5f7fcf80bfa584cab3fddd7e753a04fdd4f46e3908225af', 'https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_8.jpg?fit=inside&format=webp&lastUpdated=1774104968&size=1096x829&signature=3e4537d3acd8c3cc01c95f419c1a3a9706acbe80ac1b609fa95aa8bb', 'https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_14.jpg?fit=inside&format=webp&lastUpdated=1774104968&size=1096x829&signature=3e4537d3acd8c3cc01c95f419c1a3a9706acbe80ac1b609fa95aa8bb', 'https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_15.jpg?fit=inside&format=webp&lastUpdated=1774104968&size=1096x829&signature=3e4537d3acd8c3cc01c95f419c1a3a9706acbe80ac1b609fa95aa8bb', 'https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_16.jpg?fit=inside&format=webp&lastUpdated=1774104968&size=1096x829&signature=3e4537d3acd8c3cc01c95f419c1a3a9706acbe80ac1b609fa95aa8bb']`
Vehicle history check status. Example: `false`
Whether listing has a good deal badge. Example: `BAD_DEAL`
Manufacturer warranty duration. Example: `1`
Publication display options. Example: `['CALLTRACKING', 'PHOTO_360', 'PHOTO_LISTING', 'PHOTO_WEB', 'WEB_IMMEDIAT', 'DELIVERY', 'STRENGTHS', 'MULTI_PHOTOS']`
Date first listed online. Example: `2026-03-20T23:00:00+00:00`
Last update date. Example: `2026-03-22T11:01:13`
Listing quality or relevance score on La Centrale. Example: `639.93634`
Request date. Example: `2026-03-23T05:43:55.979536+00:00`
List of equipment. Example: `['Volant cuir', 'Antipatinage', 'Ordinateur de bord', 'Alarme', 'ABS', 'Bluetooth', 'Régulateur de vitesse', '4 roues directrices', 'Aide parking', 'Airbag frontal', 'Anti démarrage', 'ASR', 'Becquet', 'Caméra de recul', "Carnet d'entretien", 'Carte main libre', 'Climatisation automatique', 'Climatisation automatique multi zone', 'Contrôle de pression des pneus', 'Détecteur de pluie', 'Différentiel autobloquant', 'Direction assistée', 'FAP', 'Fermeture électrique', 'Frein de parking automatique', 'Jantes alu', 'Non fumeur', 'Pack cuir', 'Pack sport', 'Peinture métallisée', 'Prise audio USB', 'Projecteurs bi-xénon', 'Projecteurs xénon', 'Sièges électriques', 'Suspension sport', 'Système audio BOSE', 'Système audio MP3', 'Système Start & Stop', 'Vitres électriques', 'Pack accent noir(e)', 'Siège chauffant av', '6 litre(s) 390 kw turbo catalyseur', 'Pavillon carbone', 'Rétroviseur ext noir(e) peint', 'Sellerie : cuir partiel', 'Lunette ar. chauffant(e)/dégivrant(e)', 'Système audio porsche cdr avec ecran tactile couleur (radio/lecteur cd)', 'Equipement int. enjoliveur façade de commande carbone', 'Cadran couleur', 'Pack suppl. intérieur: ar. cuir', 'Volant de direction (sport 3 branches)', 'Levier de sélection et poignée de frein à main alcantara', '6 litre(s) 254 kw catalyseur', 'Sticker / bandes décoratives numéro de course', 'Suppression sièges ar', 'Restylage fb (option interne)', 'Vitrage teinté(e)', 'Voie élargie sur train ar', 'Système de pédales et repose pied en aluminium', 'Habillages de bas de caisse peint', 'capote électrique', 'avec monogramme individual', 'Mode de transmission traction intégrale permanente', 'Equipement int. enjoliveur façade de commande peint', 'Étriers de frein jaune peint', '8 litre(s) 478 kw turbo catalyseur', 'Equipement int. enjoliveur façade de commande cuir', 'Support à boissons embout cuir', "Combiné d'instruments avec fond argent", 'Chassis/suspensions surbaissé(e)', 'Arceau de sécurité noir(e)', "Déflecteur d'air électrique", 'Monogramme porsche peint', '0 litre(s) 368 kw catalyseur', 'Spoiler av. couleur caisse', 'Boîte de vitesses 6 rapports sport', 'Pack intérieur coutures dans une couleur différente', 'Cadran compte tours', 'Essuie vitres avec capteur de pluie', 'Monte charge train av', 'sport chrono chronomètre', 'Volant de direction (sport/cuir', 'Rétroviseur ext rabattable électriquement', "Système d'airbag crânien (airbag curtain)", 'Volant de direction chauffant(e)/dégivrant(e) (gt sport / race tex) avec multifonctions et palettes changement vitesse', 'Garniture de pavillon race tex', 'Pré équipement vehicle tracking system', 'Sièges sport av', 'recouvrements cuir', '6 litre(s) 305 kw catalyseur', 'Norme de dépollution euro 6d temp', 'Volant de direction (cuir 3 branches) avec palettes changement vitesse', '8 litre(s) 368 kw turbo catalyseur', 'Volant de direction chauffant(e)/dégivrant(e) (gt sport / cuir) avec multifonctions et palettes changement vitesse', 'Ceintures de sécurité couleur', 'Système audio porsche cdr 24 (radio/lecteur cd)', 'filtre à pollen', '6 litre(s) 340 kw turbo catalyseur', 'embout noir(e)', 'Supports isofix pour siège enfant sur siège ar', 'décor peint', 'Adaptatif sièges sport compr. réglage de siège 18 directions et pack memoire', 'Rétroviseur int cuir', 'Interface universelle audio', 'Console centrale ar cuir', 'Porsche stability management (psm)', '6 litre(s) 355 kw turbo catalyseur', 'Déflecteur spoiler av. couleur caisse', "appuis d'aile noir(e)", '3 branches) avec multifonctions', 'Siège av gauche et rétroviseur ext avec fonction mémoire (mémoire conducteur)', "Système d'assistance de conduite: assistant maintien de trajectoire", 'clignotants LED', 'Equipement int. cuir / sport tex', 'Monogramme série peint', 'Volant de direction chauffant(e)/dégivrant(e) (microfibre race tex) avec multifonctions', 'Moyeu volant de direction et levier de sélection cuir lisse', '8 litre(s) 300 kw catalyseur', 'Chassis/suspensions pour sport automobile réglable', 'Clés véhicule couleur caisse peint compr. étui cuir', "Miroir de courtoisie à l'ar éclairé(e)", 'Levier de sélection aluminium', 'Protecteurs de bas de marche noir(e)', '0 litre(s) 331 kw catalyseur', 'Construction allégée et insonorisant vitrage', 'Equipement int. cuir / race tex', 'Monogramme 911 couleurs chrome', 'lamelles cuir', 'Étriers de frein noir(e) anodisé', 'Volant de direction (alcantara 3 branches) avec palettes changement vitesse', 'Dispositif de freinage céramique (porsche ceramic composite brake', '8 litre(s) 320 kw catalyseur', 'Jantes alliage léger (argent', '0 litre(s) 353 kw turbo catalyseur', 'Pack sport chrono avec porsche design subsecond montre', 'Pack suppl. intérieur: panneau de porte cuir', 'Sièges sport dossiers cuir', 'Mode de transmission transmission intégrale', 'pccb)', 'Moyeu volant de direction cuir', 'Targa', '8 litre(s) 261 kw catalyseur', 'Volant de direction chauffant(e)/dégivrant(e) (cuir) avec multifonctions', 'Gt3 rs', "Éclairage ambiant orienté vers l'arrière", "Système d'airbag crânien porsche side impact protection system (posip)", '7 litre(s) 405 kw turbo catalyseur', 'Gt2 rs', 'Projecteur principal led compr. porsche dynamic light système (pdls)', 'compr. porsche dynamic light système plus (pdls+)', '8 litre(s) 294 kw catalyseur', 'Pack design sport noir(e)', "Système d'assistance de conduite: système d'aide au stationnement av et ar compr. caméra aide au recul et surround view", '6 litre(s) 471 kw)', 'Aile av carbone couleur caisse', 'Garniture de pavillon alcantara', 'Étriers de frein noir(e) (brillant)', "Régulateur du couple d'inertie du moteur (msr)", 'Sièges baquet av', '0 litre(s) 309 kw catalyseur', 'Arceaux targa platinum éclat soyeux', 'Moteur 3', 'Surtapis avec bordure cuir', 'Rétroviseur ext cache de rétroviseur peint', 'Aéro kit turbo', 'Protection volumétrique (système infrarouge)', 'Arceau de sécurité / cage', 'Système de freinage renforcé(e)', 'Volant de direction (gt sport cuir) avec palettes changement vitesse', 'Colonne de direction (volant de direction) réglable(s)', "Déflecteur d'air lat sideblade carbone", 'Direction assistée à commande électronique (servotronic)', 'Garniture de pavillon tissu', 'Appuie têtes av avec porsche', 'Carrosserie: 2 portes', 'Hybride 398 kw (moteur 3', 'Moteur électrique 41 kw (transmission hybride)', 'Pack touring', 'embout inox', '8 litre(s) 446 kw turbo catalyseur', 'couvercle compartiment/vide poches cuir avec monogramme spécifique et coutures couleur contrastante', 'Protecteurs de bas de marche (carbone) éclairé(e)', "Système d'assistance de conduite: assistance au démarrage en côte (hill holder)", 'Porsche active suspension management (pasm)', '0 litre(s) 290 kw turbo catalyseur', 'Cde vocale pour pcm', 'Chassis/suspension sport surbaissé(e) (20 mm)', 'Étoiles de jantes peint (de couleur différente)', 'Bouchon de réservoir finition/aspect alu', 'Embout sortie de ceinture pied milieu cuir', 'Pack intérieur: bois', '8 litre(s) 390 kw turbo catalyseur', 'Rétroviseur ext couverture carbone (sport design)', 'Éclairage diurne led 4 points', "Cadre/encadrement combiné d'instruments finition/aspect alu", 'Enjoliveurs de vitre aluminium', 'Pack suppl. intérieur: façade de commande et panneau de porte cuir', '6 litre(s) 357 kw)', 'Equipement int. cuir alcantara', 'Moteur 4', 'Spoiler ar. couleur caisse', 'Protecteurs de bas de marche (aluminium dark silver) éclairé(e)', 'Levier de sélection des rapports enjoliveur finition/aspect alu', "Eclaireur de plancher à l'ar", "Cadre/encadrement combiné d'instruments cuir", 'Ceinture de sécurité à 6 points coté passager', 'Monogramme 911 noir(e)', 'Volant de direction (gt sport / race tex) avec multifonctions et palettes changement vitesse', 'Volant de direction avec palettes changement vitesse (vareq suppl. pour volant de direction)', 'cache peint', 'Projecteur principal led compr. porsche dynamic light système plus (pdls+)', 'compte tours', 'Colonne de direction (volant de direction) à réglages électriques', 'Pare soleil avec miroir(s) (éclairé(e))', 'Equipement int. cuir brillant', 'Sticker / bandes décoratives lat', 'E gaz', 'Kit de réparation des pneumatiques', 'métallisé peint)', 'Sièges sport plus dossiers cuir avec dans une couleur différente coutures', '0 litre(s) 386 kw catalyseur', 'Réception radio digital(e) (dab+)', 'Airbag lat av', 'Sièges baquet sport av', 'Siège baquet av gauche', 'décor cuir', 'Volant de direction (gt sport alcantara / race tex) avec palettes changement vitesse', 'brossé)', 'coutures en couleur contrastante argent)', 'Projecteurs bi xénon compr. porsche dynamic light système (pdls)', 'Sièges baquets allégés av', 'Projecteurs légers', 'coutures dans/en/au couleur contrastante)', 'Protecteurs de bas de marche (inox) éclairé(e)', 'Jantes alliage léger (métallisé peint)', 'Sellerie : alcantara / simili cuir', "Grille d'entrée d'air peint", 'éclairé(e) (aluminium noir(e)', 'Boîte de vitesses 7 rapports boîte automatique à double embrayage (pdk)', 'Feux de brouillard ar', 'Sound package plus', 'Norme de dépollution euro 6e', 'Pack suppl. intérieur: façade de commande cuir', '0 litre(s) 383 kw catalyseur', 'Éclairage directionnel', 'de couleur différente', 'Moyeu volant de direction avec coutures de couleur différente (de couleur différente)', '6 litre(s) 331 kw turbo catalyseur', 'Rétroviseur ext peint', 'Enjoliveurs de vitre noir(e) (brillant)', 'Essuie vitre ar.', '8 litre(s) 383 kw turbo catalyseur', 'Volant de direction (cuir lisse/sport', 'Pack clubsport', 'Sièges ar (2 places assises) dossiers ar rabattable', 'Airbag tête epaules av (thoraxbag)', 'Direction assistée plus (asservie à la vitesse)', '8 litre(s) 412 kw turbo catalyseur', 'Batterie légère (lithium ion)', '6 litre(s) 456 kw turbo catalyseur', 'étendu sellerie cuir', "Ionisateur d'air", 'embout av carbone', 'Rétroviseur ext à réglage électrique et dégivrant', 'Repose pied finition/aspect sport', 'compr. porsche dynamic light système (pdls)', 'Levier de sélection cuir', 'Pack intérieur: cuir', 'padm)', 'Dossier ar deux parties', 'Siège av gauche à réglages électriques (avec memory)', 'Panneau de porte construction allégée', 'Sport touche', 'matelassé(e) (vareq suppl. vers volant de direction)', 'Mode de transmission roues ar motrices', "Pot d'échappement sport", 'Porsche torque vectoring (ptv)', 'Rétroviseur ext à réglages électriques', 'Automatique freins différentiel (abd)', 'Moyeux caches porsche couleur', 'Rétroviseur ext partie inférieure peint (sport design)', 'Pare brise avec antenne', '0 litre(s) 283 kw turbo catalyseur', 'Equipement int. cuir nature', 'Porsche torque vectoring plus (ptv plus)', 'Pack memory conducteur', 'Embout sport finition/aspect 4 embouts', '3. feu stop', 'Habillages de bas de caisse couleur caisse design sport', 'Equipement int. microfibre race tex', '0 litre(s) 272 kw catalyseur', 'surteinté', 'Sièges sport plus dossiers peint', 'Dossier ar fractionné (40:20:40)', '6 litre(s) 353 kw turbo catalyseur', 'Habillage de colonne de direction cuir avec dans une couleur différente coutures', 'Lave phares (lave projecteurs)', 'Arceaux targa noir(e)', 'Pare soleil race tex', 'Couvercle boite à fusibles cuir', 'Commande de capote manuel(le)', 'Chargeur à induction pour smartphone (charge sans fil)', 'Hardtop (cabriolet)', '4 litre(s) 257 kw catalyseur', "Equipement int. diffuseurs d'air cuir", 'Pare brise avec bandeau pare soleil supérieur(e)', 'Porsche design subsecond montre', 'Dynamique support moteur (porsche active drivetrain mount', 'Siège baquet av droit', 'Equipement int. équipement de série / race tex', 'Porsche management de traction (ptm)', 'Sellerie : cuir / alcantara', 'feux à LED', 'Pack éclairage int / pack design lumière', 'Blocage transversal essieu ar mécanique', 'Pré équipement téléphone/téléphone mobile avec interface bluetooth', 'Rétroviseur ext partie inférieure couleur caisse et pied de rétroviseur noir(e) (finition brillante) peint', 'Boîte de vitesses 7 rapports sport boîte automatique à double embrayage (pdk)', 'Porsche communications management (pcm) compr. online module de navigation', 'Supports isofix pour siège enfant sur siège passager', '8 litre(s) 316 kw catalyseur', 'Vehicle tracking system (pvts)', 'Allumage automatique pour feux de croisement', 'lamelles finition/aspect alu', '6 litre(s) 280 kw catalyseur', 'Habillage de bas de caisse int. cuir', 'Habillage av. sport design', 'Partie inf ar sport design peint (noir(e))', '6 litre(s) 239 kw catalyseur', 'Pare soleil cuir', 'tons cuir de série', "système d'appel d'urgence", 'Gt3 cup', '2 directions)', 'Pack sport léger', 'Jantes alliage léger (gris', '4 directions)', '0 litre(s) 375 kw catalyseur', 'Sièges sport électrique (14 directions) compr. pack memoire', 'Afficheur multifonctions / ordinateur de bord', 'Services online mobile android auto', 'Dispositif antivol pour roues (écrous antivol)', 'Phares à matrice de led compr. porsche dynamic light système plus (pdls+)', 'Appuie têtes av et ar avec porsche', 'Attaché case cuir', 'Levier de sélection alcantara / race tex', 'Éclairage ambiant garniture de pavillon', 'Pack accent argent', 'Rétroviseur ext sport design', 'Réservoir à carburant: 64 litre(s)', "Combiné d'instruments avec fond noir(e)", "Système d'assistance de conduite: système d'aide au stationnement avec caméra aide au recul", 'Siège ventilé av', 'Pack intérieur: diamar dark silver', 'Monogramme indication de version lat', 'Feux ar. non teinté / glace aspect lisse', 'noir(e)', 'Bouchon de réservoir exclusive design', '(d+g)', 'Verrouillage centralisé avec cde radio à distance', 'Boîte de vitesses 8 rapports boîte automatique à double embrayage (pdk)', 'Equipement int. cuir / tissu', 'Sièges sport plus (à réglages électriques', 'Surtapis heritage design', 'Étriers de frein rouge peint', 'Porsche communications management (pcm) compr. dvd module de navigation (étendu)', '8 litre(s) 515 kw turbo catalyseur', 'Peinture unie', '8 litre(s) 331 kw catalyseur', '8 litre(s) 427 kw turbo catalyseur', 'Bandes décoratives sport automobile', '8 litre(s) 350 kw catalyseur', '8 litre(s) 283 kw catalyseur', 'bi ton', 'Hybride 523 kw (moteur 3', 'Glace triangulaire carbone', 'Boîte automatique tiptronic (5 rapports)', 'Patère dossier cuir', 'Moyeux avec fermeture centrale', 'Pack design heritage', '8 litre(s) 397 kw turbo catalyseur', 'Système de pédales et repose pied dans finition/aspect sport', 'Système audio porsche cdr 30 (radio/lecteur cd)', 'Chassis/suspension sport (pasm) à commande électronique', 'Système audio porsche cdr 31 (radio/lecteur cd)', 'paldao', 'Rétroviseur ext asphérique', 'Norme de dépollution euro 5', 'Accès confort (sans clé déverrouillage de porte)', 'Equipement int. enjoliveur façade de commande finition/aspect alu']`
All listing characteristics. Example: `{'vehicle': {'co2': {'combined': 233, 'reliable': False, 'ecoBonusMalus': 0}, 'make': 'PORSCHE', 'cubic': 2981, 'label': '(992) COUPE 3.0 385 CARRERA BVA7', 'model': '911', 'packs': [{'name': 'Pack intérieur Aluminium brossé'}, {'name': 'Pack intérieur Carbone'}, {'name': 'Pack intérieur peint'}], 'energy': 'ESSENCE', 'length': 4519, 'critair': {'standardMet': 'EURO6', 'critairLevel': '1', 'isConversionAllowance': False}, 'gearbox': 'AUTOMATIQUE', 'options': [{'name': 'Intérieur cuir'}, {'name': 'Intérieur tout cuir'}, {'name': 'Peinture spéciale'}], 'category': 'COUPE', 'powerDin': 385, 'standard': 'WLTP', 'nbOfDoors': 2, 'equipments': [{'label': 'Volant cuir', 'category': 'Intérieur'}, {'label': 'Antipatinage', 'category': 'Sécurité'}, {'label': 'Ordinateur de bord', 'category': 'Intérieur'}, {'label': 'Alarme', 'category': 'Antivol'}, {'label': 'ABS', 'category': 'Sécurité'}, {'label': 'Bluetooth', 'category': 'Intérieur'}, {'label': 'Régulateur de vitesse', 'category': 'Intérieur'}, {'label': '4 roues directrices', 'category': 'Exterieur et chassis'}, {'label': 'Aide parking', 'category': 'Exterieur et chassis'}, {'label': 'Airbag frontal', 'category': 'Securite'}, {'label': 'Anti démarrage', 'category': 'Antivol'}, {'label': 'ASR', 'category': 'Securite'}, {'label': 'Becquet', 'category': 'Exterieur et chassis'}, {'label': 'Caméra de recul', 'category': 'Interieur'}, {'label': "Carnet d'entretien", 'category': 'Autre'}, {'label': 'Carte main libre', 'category': 'Interieur'}, {'label': 'Climatisation automatique', 'category': 'Interieur'}, {'label': 'Climatisation automatique multi zone', 'category': 'Interieur'}, {'label': 'Contrôle de pression des pneus', 'category': 'Securite'}, {'label': 'Détecteur de pluie', 'category': 'Securite'}, {'label': 'Différentiel autobloquant', 'category': 'Exterieur et chassis'}, {'label': 'Direction assistée', 'category': 'Interieur'}, {'label': 'FAP', 'category': 'Autre'}, {'label': 'Fermeture électrique', 'category': 'Interieur'}, {'label': 'Frein de parking automatique', 'category': 'Exterieur et chassis'}, {'label': 'Jantes alu', 'category': 'Exterieur et chassis'}, {'label': 'Non fumeur', 'category': 'Autre'}, {'label': 'Pack cuir', 'category': 'Interieur'}, {'label': 'Pack sport', 'category': 'Exterieur et chassis'}, {'label': 'Peinture métallisée', 'category': 'Exterieur et chassis'}, {'label': 'Prise audio USB', 'category': 'Interieur'}, {'label': 'Projecteurs bi-xénon', 'category': 'Exterieur et chassis'}, {'label': 'Projecteurs xénon', 'category': 'Exterieur et chassis'}, {'label': 'Sièges électriques', 'category': 'Interieur'}, {'label': 'Suspension sport', 'category': 'Exterieur et chassis'}, {'label': 'Système audio BOSE', 'category': 'Interieur'}, {'label': 'Système audio MP3', 'category': 'Interieur'}, {'label': 'Système Start & Stop', 'category': 'Autre'}, {'label': 'Vitres électriques', 'category': 'Interieur'}, {'label': 'Pack accent noir(e)', 'category': 'Autre'}, {'label': 'Siège chauffant av', 'category': 'Autre'}, {'label': '6 litre(s) 390 kw turbo catalyseur', 'category': 'Autre'}, {'label': 'Pavillon carbone', 'category': 'Autre'}, {'label': 'Rétroviseur ext noir(e) peint', 'category': 'Autre'}, {'label': 'Sellerie : cuir partiel', 'category': 'Autre'}, {'label': 'Lunette ar. chauffant(e)/dégivrant(e)', 'category': 'Autre'}, {'label': 'Système audio porsche cdr avec ecran tactile couleur (radio/lecteur cd)', 'category': 'Autre'}, {'label': 'Equipement int. enjoliveur façade de commande carbone', 'category': 'Autre'}, {'label': 'Cadran couleur', 'category': 'Autre'}, {'label': 'Pack suppl. intérieur: ar. cuir', 'category': 'Autre'}, {'label': 'Volant de direction (sport 3 branches)', 'category': 'Autre'}, {'label': 'Levier de sélection et poignée de frein à main alcantara', 'category': 'Autre'}, {'label': '6 litre(s) 254 kw catalyseur', 'category': 'Autre'}, {'label': 'Sticker / bandes décoratives numéro de course', 'category': 'Autre'}, {'label': 'Suppression sièges ar', 'category': 'Autre'}, {'label': 'Restylage fb (option interne)', 'category': 'Autre'}, {'label': 'Vitrage teinté(e)', 'category': 'Autre'}, {'label': 'Voie élargie sur train ar', 'category': 'Autre'}, {'label': 'Système de pédales et repose pied en aluminium', 'category': 'Autre'}, {'label': 'Habillages de bas de caisse peint', 'category': 'Autre'}, {'label': 'capote électrique', 'category': 'Autre'}, {'label': 'avec monogramme individual', 'category': 'Autre'}, {'label': 'Mode de transmission traction intégrale permanente', 'category': 'Autre'}, {'label': 'Equipement int. enjoliveur façade de commande peint', 'category': 'Autre'}, {'label': 'Étriers de frein jaune peint', 'category': 'Autre'}, {'label': '8 litre(s) 478 kw turbo catalyseur', 'category': 'Autre'}, {'label': 'Equipement int. enjoliveur façade de commande cuir', 'category': 'Autre'}, {'label': 'Support à boissons embout cuir', 'category': 'Autre'}, {'label': "Combiné d'instruments avec fond argent", 'category': 'Autre'}, {'label': 'Chassis/suspensions surbaissé(e)', 'category': 'Autre'}, {'label': 'Arceau de sécurité noir(e)', 'category': 'Autre'}, {'label': "Déflecteur d'air électrique", 'category': 'Autre'}, {'label': 'Monogramme porsche peint', 'category': 'Autre'}, {'label': '0 litre(s) 368 kw catalyseur', 'category': 'Autre'}, {'label': 'Spoiler av. couleur caisse', 'category': 'Autre'}, {'label': 'Boîte de vitesses 6 rapports sport', 'category': 'Autre'}, {'label': 'Pack intérieur coutures dans une couleur différente', 'category': 'Autre'}, {'label': 'Cadran compte tours', 'category': 'Autre'}, {'label': 'Essuie vitres avec capteur de pluie', 'category': 'Autre'}, {'label': 'Monte charge train av', 'category': 'Autre'}, {'label': 'sport chrono chronomètre', 'category': 'Autre'}, {'label': 'Volant de direction (sport/cuir', 'category': 'Autre'}, {'label': 'Rétroviseur ext rabattable électriquement', 'category': 'Autre'}, {'label': "Système d'airbag crânien (airbag curtain)", 'category': 'Autre'}, {'label': 'Volant de direction chauffant(e)/dégivrant(e) (gt sport / race tex) avec multifonctions et palettes changement vitesse', 'category': 'Autre'}, {'label': 'Garniture de pavillon race tex', 'category': 'Autre'}, {'label': 'Pré équipement vehicle tracking system', 'category': 'Autre'}, {'label': 'Sièges sport av', 'category': 'Autre'}, {'label': 'recouvrements cuir', 'category': 'Autre'}, {'label': '6 litre(s) 305 kw catalyseur', 'category': 'Autre'}, {'label': 'Norme de dépollution euro 6d temp', 'category': 'Autre'}, {'label': 'Volant de direction (cuir 3 branches) avec palettes changement vitesse', 'category': 'Autre'}, {'label': '8 litre(s) 368 kw turbo catalyseur', 'category': 'Autre'}, {'label': 'Volant de direction chauffant(e)/dégivrant(e) (gt sport / cuir) avec multifonctions et palettes changement vitesse', 'category': 'Autre'}, {'label': 'Ceintures de sécurité couleur', 'category': 'Autre'}, {'label': 'Système audio porsche cdr 24 (radio/lecteur cd)', 'category': 'Autre'}, {'label': 'filtre à pollen', 'category': 'Autre'}, {'label': '6 litre(s) 340 kw turbo catalyseur', 'category': 'Autre'}, {'label': 'embout noir(e)', 'category': 'Autre'}, {'label': 'Supports isofix pour siège enfant sur siège ar', 'category': 'Autre'}, {'label': 'décor peint', 'category': 'Autre'}, {'label': 'Adaptatif sièges sport compr. réglage de siège 18 directions et pack memoire', 'category': 'Autre'}, {'label': 'Rétroviseur int cuir', 'category': 'Autre'}, {'label': 'Interface universelle audio', 'category': 'Autre'}, {'label': 'Console centrale ar cuir', 'category': 'Autre'}, {'label': 'Porsche stability management (psm)', 'category': 'Autre'}, {'label': '6 litre(s) 355 kw turbo catalyseur', 'category': 'Autre'}, {'label': 'Déflecteur spoiler av. couleur caisse', 'category': 'Autre'}, {'label': "appuis d'aile noir(e)", 'category': 'Autre'}, {'label': '3 branches) avec multifonctions', 'category': 'Autre'}, {'label': 'Siège av gauche et rétroviseur ext avec fonction mémoire (mémoire conducteur)', 'category': 'Autre'}, {'label': "Système d'assistance de conduite: assistant maintien de trajectoire", 'category': 'Autre'}, {'label': 'clignotants LED', 'category': 'Autre'}, {'label': 'Equipement int. cuir / sport tex', 'category': 'Autre'}, {'label': 'Monogramme série peint', 'category': 'Autre'}, {'label': 'Volant de direction chauffant(e)/dégivrant(e) (microfibre race tex) avec multifonctions', 'category': 'Autre'}, {'label': 'Moyeu volant de direction et levier de sélection cuir lisse', 'category': 'Autre'}, {'label': '8 litre(s) 300 kw catalyseur', 'category': 'Autre'}, {'label': 'Chassis/suspensions pour sport automobile réglable', 'category': 'Autre'}, {'label': 'Clés véhicule couleur caisse peint compr. étui cuir', 'category': 'Autre'}, {'label': "Miroir de courtoisie à l'ar éclairé(e)", 'category': 'Autre'}, {'label': 'Levier de sélection aluminium', 'category': 'Autre'}, {'label': 'Protecteurs de bas de marche noir(e)', 'category': 'Autre'}, {'label': '0 litre(s) 331 kw catalyseur', 'category': 'Autre'}, {'label': 'Construction allégée et insonorisant vitrage', 'category': 'Autre'}, {'label': 'Equipement int. cuir / race tex', 'category': 'Autre'}, {'label': 'Monogramme 911 couleurs chrome', 'category': 'Autre'}, {'label': 'lamelles cuir', 'category': 'Autre'}, {'label': 'Étriers de frein noir(e) anodisé', 'category': 'Autre'}, {'label': 'Volant de direction (alcantara 3 branches) avec palettes changement vitesse', 'category': 'Autre'}, {'label': 'Dispositif de freinage céramique (porsche ceramic composite brake', 'category': 'Autre'}, {'label': '8 litre(s) 320 kw catalyseur', 'category': 'Autre'}, {'label': 'Jantes alliage léger (argent', 'category': 'Autre'}, {'label': '0 litre(s) 353 kw turbo catalyseur', 'category': 'Autre'}, {'label': 'Pack sport chrono avec porsche design subsecond montre', 'category': 'Autre'}, {'label': 'Pack suppl. intérieur: panneau de porte cuir', 'category': 'Autre'}, {'label': 'Sièges sport dossiers cuir', 'category': 'Autre'}, {'label': 'Mode de transmission transmission intégrale', 'category': 'Autre'}, {'label': 'pccb)', 'category': 'Autre'}, {'label': 'Moyeu volant de direction cuir', 'category': 'Autre'}, {'label': 'Targa', 'category': 'Autre'}, {'label': '8 litre(s) 261 kw catalyseur', 'category': 'Autre'}, {'label': 'Volant de direction chauffant(e)/dégivrant(e) (cuir) avec multifonctions', 'category': 'Autre'}, {'label': 'Gt3 rs', 'category': 'Autre'}, {'label': "Éclairage ambiant orienté vers l'arrière", 'category': 'Autre'}, {'label': "Système d'airbag crânien porsche side impact protection system (posip)", 'category': 'Autre'}, {'label': '7 litre(s) 405 kw turbo catalyseur', 'category': 'Autre'}, {'label': 'Gt2 rs', 'category': 'Autre'}, {'label': 'Projecteur principal led compr. porsche dynamic light système (pdls)', 'category': 'Autre'}, {'label': 'compr. porsche dynamic light système plus (pdls+)', 'category': 'Autre'}, {'label': '8 litre(s) 294 kw catalyseur', 'category': 'Autre'}, {'label': 'Pack design sport noir(e)', 'category': 'Autre'}, {'label': "Système d'assistance de conduite: système d'aide au stationnement av et ar compr. caméra aide au recul et surround view", 'category': 'Autre'}, {'label': '6 litre(s) 471 kw)', 'category': 'Autre'}, {'label': 'Aile av carbone couleur caisse', 'category': 'Autre'}, {'label': 'Garniture de pavillon alcantara', 'category': 'Autre'}, {'label': 'Étriers de frein noir(e) (brillant)', 'category': 'Autre'}, {'label': "Régulateur du couple d'inertie du moteur (msr)", 'category': 'Autre'}, {'label': 'Sièges baquet av', 'category': 'Autre'}, {'label': '0 litre(s) 309 kw catalyseur', 'category': 'Autre'}, {'label': 'Arceaux targa platinum éclat soyeux', 'category': 'Autre'}, {'label': 'Moteur 3', 'category': 'Autre'}, {'label': 'Surtapis avec bordure cuir', 'category': 'Autre'}, {'label': 'Rétroviseur ext cache de rétroviseur peint', 'category': 'Autre'}, {'label': 'Aéro kit turbo', 'category': 'Autre'}, {'label': 'Protection volumétrique (système infrarouge)', 'category': 'Autre'}, {'label': 'Arceau de sécurité / cage', 'category': 'Autre'}, {'label': 'Système de freinage renforcé(e)', 'category': 'Autre'}, {'label': 'Volant de direction (gt sport cuir) avec palettes changement vitesse', 'category': 'Autre'}, {'label': 'Colonne de direction (volant de direction) réglable(s)', 'category': 'Autre'}, {'label': "Déflecteur d'air lat sideblade carbone", 'category': 'Autre'}, {'label': 'Direction assistée à commande électronique (servotronic)', 'category': 'Autre'}, {'label': 'Garniture de pavillon tissu', 'category': 'Autre'}, {'label': 'Appuie têtes av avec porsche', 'category': 'Autre'}, {'label': 'Carrosserie: 2 portes', 'category': 'Autre'}, {'label': 'Hybride 398 kw (moteur 3', 'category': 'Autre'}, {'label': 'Moteur électrique 41 kw (transmission hybride)', 'category': 'Autre'}, {'label': 'Pack touring', 'category': 'Autre'}, {'label': 'embout inox', 'category': 'Autre'}, {'label': '8 litre(s) 446 kw turbo catalyseur', 'category': 'Autre'}, {'label': 'couvercle compartiment/vide poches cuir avec monogramme spécifique et coutures couleur contrastante', 'category': 'Autre'}, {'label': 'Protecteurs de bas de marche (carbone) éclairé(e)', 'category': 'Autre'}, {'label': "Système d'assistance de conduite: assistance au démarrage en côte (hill holder)", 'category': 'Autre'}, {'label': 'Porsche active suspension management (pasm)', 'category': 'Autre'}, {'label': '0 litre(s) 290 kw turbo catalyseur', 'category': 'Autre'}, {'label': 'Cde vocale pour pcm', 'category': 'Autre'}, {'label': 'Chassis/suspension sport surbaissé(e) (20 mm)', 'category': 'Autre'}, {'label': 'Étoiles de jantes peint (de couleur différente)', 'category': 'Autre'}, {'label': 'Bouchon de réservoir finition/aspect alu', 'category': 'Autre'}, {'label': 'Embout sortie de ceinture pied milieu cuir', 'category': 'Autre'}, {'label': 'Pack intérieur: bois', 'category': 'Autre'}, {'label': '8 litre(s) 390 kw turbo catalyseur', 'category': 'Autre'}, {'label': 'Rétroviseur ext couverture carbone (sport design)', 'category': 'Autre'}, {'label': 'Éclairage diurne led 4 points', 'category': 'Autre'}, {'label': "Cadre/encadrement combiné d'instruments finition/aspect alu", 'category': 'Autre'}, {'label': 'Enjoliveurs de vitre aluminium', 'category': 'Autre'}, {'label': 'Pack suppl. intérieur: façade de commande et panneau de porte cuir', 'category': 'Autre'}, {'label': '6 litre(s) 357 kw)', 'category': 'Autre'}, {'label': 'Equipement int. cuir alcantara', 'category': 'Autre'}, {'label': 'Moteur 4', 'category': 'Autre'}, {'label': 'Spoiler ar. couleur caisse', 'category': 'Autre'}, {'label': 'Protecteurs de bas de marche (aluminium dark silver) éclairé(e)', 'category': 'Autre'}, {'label': 'Levier de sélection des rapports enjoliveur finition/aspect alu', 'category': 'Autre'}, {'label': "Eclaireur de plancher à l'ar", 'category': 'Autre'}, {'label': "Cadre/encadrement combiné d'instruments cuir", 'category': 'Autre'}, {'label': 'Ceinture de sécurité à 6 points coté passager', 'category': 'Autre'}, {'label': 'Monogramme 911 noir(e)', 'category': 'Autre'}, {'label': 'Volant de direction (gt sport / race tex) avec multifonctions et palettes changement vitesse', 'category': 'Autre'}, {'label': 'Volant de direction avec palettes changement vitesse (vareq suppl. pour volant de direction)', 'category': 'Autre'}, {'label': 'cache peint', 'category': 'Autre'}, {'label': 'Projecteur principal led compr. porsche dynamic light système plus (pdls+)', 'category': 'Autre'}, {'label': 'compte tours', 'category': 'Autre'}, {'label': 'Colonne de direction (volant de direction) à réglages électriques', 'category': 'Autre'}, {'label': 'Pare soleil avec miroir(s) (éclairé(e))', 'category': 'Autre'}, {'label': 'Equipement int. cuir brillant', 'category': 'Autre'}, {'label': 'Sticker / bandes décoratives lat', 'category': 'Autre'}, {'label': 'E gaz', 'category': 'Autre'}, {'label': 'Kit de réparation des pneumatiques', 'category': 'Autre'}, {'label': 'métallisé peint)', 'category': 'Autre'}, {'label': 'Sièges sport plus dossiers cuir avec dans une couleur différente coutures', 'category': 'Autre'}, {'label': '0 litre(s) 386 kw catalyseur', 'category': 'Autre'}, {'label': 'Réception radio digital(e) (dab+)', 'category': 'Autre'}, {'label': 'Airbag lat av', 'category': 'Autre'}, {'label': 'Sièges baquet sport av', 'category': 'Autre'}, {'label': 'Siège baquet av gauche', 'category': 'Autre'}, {'label': 'décor cuir', 'category': 'Autre'}, {'label': 'Volant de direction (gt sport alcantara / race tex) avec palettes changement vitesse', 'category': 'Autre'}, {'label': 'brossé)', 'category': 'Autre'}, {'label': 'coutures en couleur contrastante argent)', 'category': 'Autre'}, {'label': 'Projecteurs bi xénon compr. porsche dynamic light système (pdls)', 'category': 'Autre'}, {'label': 'Sièges baquets allégés av', 'category': 'Autre'}, {'label': 'Projecteurs légers', 'category': 'Autre'}, {'label': 'coutures dans/en/au couleur contrastante)', 'category': 'Autre'}, {'label': 'Protecteurs de bas de marche (inox) éclairé(e)', 'category': 'Autre'}, {'label': 'Jantes alliage léger (métallisé peint)', 'category': 'Autre'}, {'label': 'Sellerie : alcantara / simili cuir', 'category': 'Autre'}, {'label': "Grille d'entrée d'air peint", 'category': 'Autre'}, {'label': 'éclairé(e) (aluminium noir(e)', 'category': 'Autre'}, {'label': 'Boîte de vitesses 7 rapports boîte automatique à double embrayage (pdk)', 'category': 'Autre'}, {'label': 'Feux de brouillard ar', 'category': 'Autre'}, {'label': 'Sound package plus', 'category': 'Autre'}, {'label': 'Norme de dépollution euro 6e', 'category': 'Autre'}, {'label': 'Pack suppl. intérieur: façade de commande cuir', 'category': 'Autre'}, {'label': '0 litre(s) 383 kw catalyseur', 'category': 'Autre'}, {'label': 'Éclairage directionnel', 'category': 'Autre'}, {'label': 'de couleur différente', 'category': 'Autre'}, {'label': 'Moyeu volant de direction avec coutures de couleur différente (de couleur différente)', 'category': 'Autre'}, {'label': '6 litre(s) 331 kw turbo catalyseur', 'category': 'Autre'}, {'label': 'Rétroviseur ext peint', 'category': 'Autre'}, {'label': 'Enjoliveurs de vitre noir(e) (brillant)', 'category': 'Autre'}, {'label': 'Essuie vitre ar.', 'category': 'Autre'}, {'label': '8 litre(s) 383 kw turbo catalyseur', 'category': 'Autre'}, {'label': 'Volant de direction (cuir lisse/sport', 'category': 'Autre'}, {'label': 'Pack clubsport', 'category': 'Autre'}, {'label': 'Sièges ar (2 places assises) dossiers ar rabattable', 'category': 'Autre'}, {'label': 'Airbag tête epaules av (thoraxbag)', 'category': 'Autre'}, {'label': 'Direction assistée plus (asservie à la vitesse)', 'category': 'Autre'}, {'label': '8 litre(s) 412 kw turbo catalyseur', 'category': 'Autre'}, {'label': 'Batterie légère (lithium ion)', 'category': 'Autre'}, {'label': '6 litre(s) 456 kw turbo catalyseur', 'category': 'Autre'}, {'label': 'étendu sellerie cuir', 'category': 'Autre'}, {'label': "Ionisateur d'air", 'category': 'Autre'}, {'label': 'embout av carbone', 'category': 'Autre'}, {'label': 'Rétroviseur ext à réglage électrique et dégivrant', 'category': 'Autre'}, {'label': 'Repose pied finition/aspect sport', 'category': 'Autre'}, {'label': 'compr. porsche dynamic light système (pdls)', 'category': 'Autre'}, {'label': 'Levier de sélection cuir', 'category': 'Autre'}, {'label': 'Pack intérieur: cuir', 'category': 'Autre'}, {'label': 'padm)', 'category': 'Autre'}, {'label': 'Dossier ar deux parties', 'category': 'Autre'}, {'label': 'Siège av gauche à réglages électriques (avec memory)', 'category': 'Autre'}, {'label': 'Panneau de porte construction allégée', 'category': 'Autre'}, {'label': 'Sport touche', 'category': 'Autre'}, {'label': 'matelassé(e) (vareq suppl. vers volant de direction)', 'category': 'Autre'}, {'label': 'Mode de transmission roues ar motrices', 'category': 'Autre'}, {'label': "Pot d'échappement sport", 'category': 'Autre'}, {'label': 'Porsche torque vectoring (ptv)', 'category': 'Autre'}, {'label': 'Rétroviseur ext à réglages électriques', 'category': 'Autre'}, {'label': 'Automatique freins différentiel (abd)', 'category': 'Autre'}, {'label': 'Moyeux caches porsche couleur', 'category': 'Autre'}, {'label': 'Rétroviseur ext partie inférieure peint (sport design)', 'category': 'Autre'}, {'label': 'Pare brise avec antenne', 'category': 'Autre'}, {'label': '0 litre(s) 283 kw turbo catalyseur', 'category': 'Autre'}, {'label': 'Equipement int. cuir nature', 'category': 'Autre'}, {'label': 'Porsche torque vectoring plus (ptv plus)', 'category': 'Autre'}, {'label': 'Pack memory conducteur', 'category': 'Autre'}, {'label': 'Embout sport finition/aspect 4 embouts', 'category': 'Autre'}, {'label': '3. feu stop', 'category': 'Autre'}, {'label': 'Habillages de bas de caisse couleur caisse design sport', 'category': 'Autre'}, {'label': 'Equipement int. microfibre race tex', 'category': 'Autre'}, {'label': '0 litre(s) 272 kw catalyseur', 'category': 'Autre'}, {'label': 'surteinté', 'category': 'Autre'}, {'label': 'Sièges sport plus dossiers peint', 'category': 'Autre'}, {'label': 'Dossier ar fractionné (40:20:40)', 'category': 'Autre'}, {'label': '6 litre(s) 353 kw turbo catalyseur', 'category': 'Autre'}, {'label': 'Habillage de colonne de direction cuir avec dans une couleur différente coutures', 'category': 'Autre'}, {'label': 'Lave phares (lave projecteurs)', 'category': 'Autre'}, {'label': 'Arceaux targa noir(e)', 'category': 'Autre'}, {'label': 'Pare soleil race tex', 'category': 'Autre'}, {'label': 'Couvercle boite à fusibles cuir', 'category': 'Autre'}, {'label': 'Commande de capote manuel(le)', 'category': 'Autre'}, {'label': 'Chargeur à induction pour smartphone (charge sans fil)', 'category': 'Autre'}, {'label': 'Hardtop (cabriolet)', 'category': 'Autre'}, {'label': '4 litre(s) 257 kw catalyseur', 'category': 'Autre'}, {'label': "Equipement int. diffuseurs d'air cuir", 'category': 'Autre'}, {'label': 'Pare brise avec bandeau pare soleil supérieur(e)', 'category': 'Autre'}, {'label': 'Porsche design subsecond montre', 'category': 'Autre'}, {'label': 'Dynamique support moteur (porsche active drivetrain mount', 'category': 'Autre'}, {'label': 'Siège baquet av droit', 'category': 'Autre'}, {'label': 'Equipement int. équipement de série / race tex', 'category': 'Autre'}, {'label': 'Porsche management de traction (ptm)', 'category': 'Autre'}, {'label': 'Sellerie : cuir / alcantara', 'category': 'Autre'}, {'label': 'feux à LED', 'category': 'Autre'}, {'label': 'Pack éclairage int / pack design lumière', 'category': 'Autre'}, {'label': 'Blocage transversal essieu ar mécanique', 'category': 'Autre'}, {'label': 'Pré équipement téléphone/téléphone mobile avec interface bluetooth', 'category': 'Autre'}, {'label': 'Rétroviseur ext partie inférieure couleur caisse et pied de rétroviseur noir(e) (finition brillante) peint', 'category': 'Autre'}, {'label': 'Boîte de vitesses 7 rapports sport boîte automatique à double embrayage (pdk)', 'category': 'Autre'}, {'label': 'Porsche communications management (pcm) compr. online module de navigation', 'category': 'Autre'}, {'label': 'Supports isofix pour siège enfant sur siège passager', 'category': 'Autre'}, {'label': '8 litre(s) 316 kw catalyseur', 'category': 'Autre'}, {'label': 'Vehicle tracking system (pvts)', 'category': 'Autre'}, {'label': 'Allumage automatique pour feux de croisement', 'category': 'Autre'}, {'label': 'lamelles finition/aspect alu', 'category': 'Autre'}, {'label': '6 litre(s) 280 kw catalyseur', 'category': 'Autre'}, {'label': 'Habillage de bas de caisse int. cuir', 'category': 'Autre'}, {'label': 'Habillage av. sport design', 'category': 'Autre'}, {'label': 'Partie inf ar sport design peint (noir(e))', 'category': 'Autre'}, {'label': '6 litre(s) 239 kw catalyseur', 'category': 'Autre'}, {'label': 'Pare soleil cuir', 'category': 'Autre'}, {'label': 'tons cuir de série', 'category': 'Autre'}, {'label': "système d'appel d'urgence", 'category': 'Autre'}, {'label': 'Gt3 cup', 'category': 'Autre'}, {'label': '2 directions)', 'category': 'Autre'}, {'label': 'Pack sport léger', 'category': 'Autre'}, {'label': 'Jantes alliage léger (gris', 'category': 'Autre'}, {'label': '4 directions)', 'category': 'Autre'}, {'label': '0 litre(s) 375 kw catalyseur', 'category': 'Autre'}, {'label': 'Sièges sport électrique (14 directions) compr. pack memoire', 'category': 'Autre'}, {'label': 'Afficheur multifonctions / ordinateur de bord', 'category': 'Autre'}, {'label': 'Services online mobile android auto', 'category': 'Autre'}, {'label': 'Dispositif antivol pour roues (écrous antivol)', 'category': 'Autre'}, {'label': 'Phares à matrice de led compr. porsche dynamic light système plus (pdls+)', 'category': 'Autre'}, {'label': 'Appuie têtes av et ar avec porsche', 'category': 'Autre'}, {'label': 'Attaché case cuir', 'category': 'Autre'}, {'label': 'Levier de sélection alcantara / race tex', 'category': 'Autre'}, {'label': 'Éclairage ambiant garniture de pavillon', 'category': 'Autre'}, {'label': 'Pack accent argent', 'category': 'Autre'}, {'label': 'Rétroviseur ext sport design', 'category': 'Autre'}, {'label': 'Réservoir à carburant: 64 litre(s)', 'category': 'Autre'}, {'label': "Combiné d'instruments avec fond noir(e)", 'category': 'Autre'}, {'label': "Système d'assistance de conduite: système d'aide au stationnement avec caméra aide au recul", 'category': 'Autre'}, {'label': 'Siège ventilé av', 'category': 'Autre'}, {'label': 'Pack intérieur: diamar dark silver', 'category': 'Autre'}, {'label': 'Monogramme indication de version lat', 'category': 'Autre'}, {'label': 'Feux ar. non teinté / glace aspect lisse', 'category': 'Autre'}, {'label': 'noir(e)', 'category': 'Autre'}, {'label': 'Bouchon de réservoir exclusive design', 'category': 'Autre'}, {'label': '(d+g)', 'category': 'Autre'}, {'label': 'Verrouillage centralisé avec cde radio à distance', 'category': 'Autre'}, {'label': 'Boîte de vitesses 8 rapports boîte automatique à double embrayage (pdk)', 'category': 'Autre'}, {'label': 'Equipement int. cuir / tissu', 'category': 'Autre'}, {'label': 'Sièges sport plus (à réglages électriques', 'category': 'Autre'}, {'label': 'Surtapis heritage design', 'category': 'Autre'}, {'label': 'Étriers de frein rouge peint', 'category': 'Autre'}, {'label': 'Porsche communications management (pcm) compr. dvd module de navigation (étendu)', 'category': 'Autre'}, {'label': '8 litre(s) 515 kw turbo catalyseur', 'category': 'Autre'}, {'label': 'Peinture unie', 'category': 'Autre'}, {'label': '8 litre(s) 331 kw catalyseur', 'category': 'Autre'}, {'label': '8 litre(s) 427 kw turbo catalyseur', 'category': 'Autre'}, {'label': 'Bandes décoratives sport automobile', 'category': 'Autre'}, {'label': '8 litre(s) 350 kw catalyseur', 'category': 'Autre'}, {'label': '8 litre(s) 283 kw catalyseur', 'category': 'Autre'}, {'label': 'bi ton', 'category': 'Autre'}, {'label': 'Hybride 523 kw (moteur 3', 'category': 'Autre'}, {'label': 'Glace triangulaire carbone', 'category': 'Autre'}, {'label': 'Boîte automatique tiptronic (5 rapports)', 'category': 'Autre'}, {'label': 'Patère dossier cuir', 'category': 'Autre'}, {'label': 'Moyeux avec fermeture centrale', 'category': 'Autre'}, {'label': 'Pack design heritage', 'category': 'Autre'}, {'label': '8 litre(s) 397 kw turbo catalyseur', 'category': 'Autre'}, {'label': 'Système de pédales et repose pied dans finition/aspect sport', 'category': 'Autre'}, {'label': 'Système audio porsche cdr 30 (radio/lecteur cd)', 'category': 'Autre'}, {'label': 'Chassis/suspension sport (pasm) à commande électronique', 'category': 'Autre'}, {'label': 'Système audio porsche cdr 31 (radio/lecteur cd)', 'category': 'Autre'}, {'label': 'paldao', 'category': 'Autre'}, {'label': 'Rétroviseur ext asphérique', 'category': 'Autre'}, {'label': 'Norme de dépollution euro 5', 'category': 'Autre'}, {'label': 'Accès confort (sans clé déverrouillage de porte)', 'category': 'Autre'}, {'label': 'Equipement int. enjoliveur façade de commande finition/aspect alu', 'category': 'Autre'}], 'consumption': {'combined': 10.3, 'reliable': False}, 'externalColor': 'gris', 'internalColor': 'cuir', 'maxTrunkVolume': 132, 'commercialModel': '911', 'seatingCapacity': 4, 'firstTrafficDate': '2024-10-07', 'fiscalHorsePower': 27}, 'classified': {'year': '2024', 'price': 154990, 'title': 'PORSCHE 911 TYPE 992', 'status': 'ONLINE', 'mileage': 10930, 'zipCode': '06800', 'firstHand': True, 'mappingId': 'MDQ1MTEyNzYyMQ==', 'reference': 'E118586883', 'visitPlace': '06', 'description': {}, 'customerType': 'PRO', 'mileageBadge': 'MEDIUM_MILEAGE', 'referencePro': '16', 'goodDealBadge': 'BAD_DEAL', 'averageMileage': 11151, 'priceVariation': {'prices': {'current': 154990, 'history': [154990, 154990], 'initial': 154990, 'isDropping': False, 'percentage': 0, 'isPriceCrossed': False}, 'isAgeCapped': False, 'displayedAge': 2}, 'refinedQuotation': 126805, 'reliabilityIndex': 3, 'customerReference': 'C060750', 'ownerCorrelationId': 'C060750', 'publicationEndDate': '2999-01-01T00:00:00Z', 'constructorWarranty': {'endDate': '2026-10-06', 'duration': 24}}}`
List of vehicle options. Example: `['Intérieur cuir', 'Intérieur tout cuir', 'Peinture spéciale']`
Seller's address. Example: `38 CHEMIN DU VALLON DES VAUX, CAGNES-SUR-MER`
Seller's postal code. Example: `06800`
Seller name. Example: `MOTORSPORT BY TB`
Seller category. Example: `INTERMEDIAIRE`
Seller company founding date. Example: `2026-03-11T15:43:25+00:00`
Whether seller is verified. Example: `false`
Seller's comment or description
Vehicle rating page link. Example: `/cote-auto-porsche-911-(992)+coupe+3.0+385+carrera+bva7-2024.html?km=10930&price=154990&zip-code=06800&version-id=26428228&modelCom=911+type+992&ref=69118586883"ation=126805&trustIndex=3`
Vehicle history report link
Technical specifications page link. Example: `/fiche-technique-voiture-porsche-911-(992)+coupe+3.0+385+carrera+bva7-2024.html?version-id=26428228&modelCom=911+type+992`
CO2 emissions. Example: `233.0`
Fiscal horsepower rating. Example: `27.0`
Engine power in horsepower. Example: `385.0`
Number of seats. Example: `4`
Engine cylinder capacity. Example: `2981.0`
Battery consumption rate
Battery capacity in kWh
Electric range in km
Whether vehicle is a plug-in hybrid
Vehicle length. Example: `4519`
Maximum trunk volume in litres. Example: `132`
First registration date. Example: `2024-10-06`
French Crit'Air pollution sticker level. Example: `1`
Euro emissions standard. Example: `EURO6`
Price variation or change. Example: `{'prices': {'current': 154990, 'history': [154990, 154990], 'initial': 154990, 'isDropping': False, 'percentage': 0, 'isPriceCrossed': False}, 'isAgeCapped': False, 'displayedAge': 2}`
Average expected mileage for the year. Example: `11151`
Warranty duration in months. Example: `24`
Warranty end date. Example: `2026-10-05`
Whether vehicle has had only one owner. Example: `true`
Number of previous owners
Mapping identifier. Example: `MDQ1MTEyNzYyMQ==`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 52300,
"object": "result",
"squid": "0d72266853630ccf5271ab983f1d3600",
"run": "077f196f2e213d75aa5f4c640855e2f8",
"reference": "E118586883",
"listing_url": "https://www.lacentrale.fr/auto-occasion-annonce-69118586883.html",
"price": 154990.0,
"financing_teasing_price": null,
"photo_url": "https://image-annonce.lacentrale.fr/1096x829/E118586883_STANDARD_0.jpg",
"photo_urls_mobile": [
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_0.jpg?format=webp&size=285x214&watermark=lc&signature=639071adacd9528c215e8872ccb22969a1a7e6ac2b3a853bb4d2d935",
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_1.jpg?format=webp&size=140x105&watermark=lc&signature=a7aec3d26decefda5cf888170c580e86bd6bcca67f2d779a39eddf4d",
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_2.jpg?format=webp&size=140x105&watermark=lc&signature=a7aec3d26decefda5cf888170c580e86bd6bcca67f2d779a39eddf4d"
],
"pictures_count": 17,
"pictures_count_date": "2026-03-21T14:56:09",
"make": "PORSCHE",
"model": "911",
"detailed_model": "PORSCHE 911 TYPE 992",
"commercial_name": "911 TYPE 992",
"version": "(992) COUPE 3.0 385 CARRERA BVA7",
"trim_level": "CARRERA",
"motorization": "3.0 385",
"year": 2024,
"mileage": 10930,
"energy": "ESSENCE",
"gearbox": "AUTO",
"doors": 2,
"category": "COUPE",
"family": "AUTO",
"external_color": "gris",
"customer_type": "PRO",
"customer_reference": "C060750",
"customer_family_code": "INTERMEDIAIRE",
"contact_name": "MOTORSPORT BY TB",
"display_phone": "33451127621",
"country": "FR",
"visit_place": "06",
"distance_km": null,
"delivery_is_active": true,
"delivery_available_prices": [
0,
100,
200,
300,
500
],
"is_deliverable": false,
"delivery_price": null,
"is_new": true,
"pictures_360_exterieur": false,
"pictures_photosphere": false,
"all_photos": [
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_0.jpg?fit=inside&format=webp&lastUpdated=1774104969&size=1096x829&signature=b23a53dca5f7fcf80bfa584cab3fddd7e753a04fdd4f46e3908225af",
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_1.jpg?fit=inside&format=webp&lastUpdated=1774104969&size=1096x829&signature=b23a53dca5f7fcf80bfa584cab3fddd7e753a04fdd4f46e3908225af",
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_10.jpg?fit=inside&format=webp&lastUpdated=1774104968&size=1096x829&signature=3e4537d3acd8c3cc01c95f419c1a3a9706acbe80ac1b609fa95aa8bb",
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_11.jpg?fit=inside&format=webp&lastUpdated=1774104969&size=1096x829&signature=b23a53dca5f7fcf80bfa584cab3fddd7e753a04fdd4f46e3908225af",
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_2.jpg?fit=inside&format=webp&lastUpdated=1774104969&size=1096x829&signature=b23a53dca5f7fcf80bfa584cab3fddd7e753a04fdd4f46e3908225af",
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_3.jpg?fit=inside&format=webp&lastUpdated=1774104969&size=1096x829&signature=b23a53dca5f7fcf80bfa584cab3fddd7e753a04fdd4f46e3908225af",
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_12.jpg?fit=inside&format=webp&lastUpdated=1774104969&size=1096x829&signature=b23a53dca5f7fcf80bfa584cab3fddd7e753a04fdd4f46e3908225af",
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_4.jpg?fit=inside&format=webp&lastUpdated=1774104969&size=1096x829&signature=b23a53dca5f7fcf80bfa584cab3fddd7e753a04fdd4f46e3908225af",
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_9.jpg?fit=inside&format=webp&lastUpdated=1774104968&size=1096x829&signature=3e4537d3acd8c3cc01c95f419c1a3a9706acbe80ac1b609fa95aa8bb",
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_5.jpg?fit=inside&format=webp&lastUpdated=1774104969&size=1096x829&signature=b23a53dca5f7fcf80bfa584cab3fddd7e753a04fdd4f46e3908225af",
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_6.jpg?fit=inside&format=webp&lastUpdated=1774104968&size=1096x829&signature=3e4537d3acd8c3cc01c95f419c1a3a9706acbe80ac1b609fa95aa8bb",
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_7.jpg?fit=inside&format=webp&lastUpdated=1774104968&size=1096x829&signature=3e4537d3acd8c3cc01c95f419c1a3a9706acbe80ac1b609fa95aa8bb",
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_13.jpg?fit=inside&format=webp&lastUpdated=1774104969&size=1096x829&signature=b23a53dca5f7fcf80bfa584cab3fddd7e753a04fdd4f46e3908225af",
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_8.jpg?fit=inside&format=webp&lastUpdated=1774104968&size=1096x829&signature=3e4537d3acd8c3cc01c95f419c1a3a9706acbe80ac1b609fa95aa8bb",
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_14.jpg?fit=inside&format=webp&lastUpdated=1774104968&size=1096x829&signature=3e4537d3acd8c3cc01c95f419c1a3a9706acbe80ac1b609fa95aa8bb",
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_15.jpg?fit=inside&format=webp&lastUpdated=1774104968&size=1096x829&signature=3e4537d3acd8c3cc01c95f419c1a3a9706acbe80ac1b609fa95aa8bb",
"https://pictures.lacentrale.fr/classifieds/E118586883_STANDARD_16.jpg?fit=inside&format=webp&lastUpdated=1774104968&size=1096x829&signature=3e4537d3acd8c3cc01c95f419c1a3a9706acbe80ac1b609fa95aa8bb"
],
"autoviza": false,
"good_deal_badge": "BAD_DEAL",
"manufacturer_warranty_duration": 1,
"publication_options": [
"CALLTRACKING",
"PHOTO_360",
"PHOTO_LISTING",
"PHOTO_WEB",
"WEB_IMMEDIAT",
"DELIVERY",
"STRENGTHS",
"MULTI_PHOTOS"
],
"first_online_date": "2026-03-20T23:00:00+00:00",
"last_update": "2026-03-22T11:01:13",
"score": 639.93634,
"request_date": "2026-03-23T05:43:55.979536+00:00",
"equipment_list": [
"Volant cuir",
"Antipatinage",
"Ordinateur de bord",
"Alarme",
"ABS",
"Bluetooth",
"Régulateur de vitesse",
"4 roues directrices",
"Aide parking",
"Airbag frontal",
"Anti démarrage",
"ASR",
"Becquet",
"Caméra de recul",
"Carnet d'entretien",
"Carte main libre",
"Climatisation automatique",
"Climatisation automatique multi zone",
"Contrôle de pression des pneus",
"Détecteur de pluie",
"Différentiel autobloquant",
"Direction assistée",
"FAP",
"Fermeture électrique",
"Frein de parking automatique",
"Jantes alu",
"Non fumeur",
"Pack cuir",
"Pack sport",
"Peinture métallisée",
"Prise audio USB",
"Projecteurs bi-xénon",
"Projecteurs xénon",
"Sièges électriques",
"Suspension sport",
"Système audio BOSE",
"Système audio MP3",
"Système Start & Stop",
"Vitres électriques",
"Pack accent noir(e)",
"Siège chauffant av",
"6 litre(s) 390 kw turbo catalyseur",
"Pavillon carbone",
"Rétroviseur ext noir(e) peint",
"Sellerie : cuir partiel",
"Lunette ar. chauffant(e)/dégivrant(e)",
"Système audio porsche cdr avec ecran tactile couleur (radio/lecteur cd)",
"Equipement int. enjoliveur façade de commande carbone",
"Cadran couleur",
"Pack suppl. intérieur: ar. cuir",
"Volant de direction (sport 3 branches)",
"Levier de sélection et poignée de frein à main alcantara",
"6 litre(s) 254 kw catalyseur",
"Sticker / bandes décoratives numéro de course",
"Suppression sièges ar",
"Restylage fb (option interne)",
"Vitrage teinté(e)",
"Voie élargie sur train ar",
"Système de pédales et repose pied en aluminium",
"Habillages de bas de caisse peint",
"capote électrique",
"avec monogramme individual",
"Mode de transmission traction intégrale permanente",
"Equipement int. enjoliveur façade de commande peint",
"Étriers de frein jaune peint",
"8 litre(s) 478 kw turbo catalyseur",
"Equipement int. enjoliveur façade de commande cuir",
"Support à boissons embout cuir",
"Combiné d'instruments avec fond argent",
"Chassis/suspensions surbaissé(e)",
"Arceau de sécurité noir(e)",
"Déflecteur d'air électrique",
"Monogramme porsche peint",
"0 litre(s) 368 kw catalyseur",
"Spoiler av. couleur caisse",
"Boîte de vitesses 6 rapports sport",
"Pack intérieur coutures dans une couleur différente",
"Cadran compte tours",
"Essuie vitres avec capteur de pluie",
"Monte charge train av",
"sport chrono chronomètre",
"Volant de direction (sport/cuir",
"Rétroviseur ext rabattable électriquement",
"Système d'airbag crânien (airbag curtain)",
"Volant de direction chauffant(e)/dégivrant(e) (gt sport / race tex) avec multifonctions et palettes changement vitesse",
"Garniture de pavillon race tex",
"Pré équipement vehicle tracking system",
"Sièges sport av",
"recouvrements cuir",
"6 litre(s) 305 kw catalyseur",
"Norme de dépollution euro 6d temp",
"Volant de direction (cuir 3 branches) avec palettes changement vitesse",
"8 litre(s) 368 kw turbo catalyseur",
"Volant de direction chauffant(e)/dégivrant(e) (gt sport / cuir) avec multifonctions et palettes changement vitesse",
"Ceintures de sécurité couleur",
"Système audio porsche cdr 24 (radio/lecteur cd)",
"filtre à pollen",
"6 litre(s) 340 kw turbo catalyseur",
"embout noir(e)",
"Supports isofix pour siège enfant sur siège ar",
"décor peint",
"Adaptatif sièges sport compr. réglage de siège 18 directions et pack memoire",
"Rétroviseur int cuir",
"Interface universelle audio",
"Console centrale ar cuir",
"Porsche stability management (psm)",
"6 litre(s) 355 kw turbo catalyseur",
"Déflecteur spoiler av. couleur caisse",
"appuis d'aile noir(e)",
"3 branches) avec multifonctions",
"Siège av gauche et rétroviseur ext avec fonction mémoire (mémoire conducteur)",
"Système d'assistance de conduite: assistant maintien de trajectoire",
"clignotants LED",
"Equipement int. cuir / sport tex",
"Monogramme série peint",
"Volant de direction chauffant(e)/dégivrant(e) (microfibre race tex) avec multifonctions",
"Moyeu volant de direction et levier de sélection cuir lisse",
"8 litre(s) 300 kw catalyseur",
"Chassis/suspensions pour sport automobile réglable",
"Clés véhicule couleur caisse peint compr. étui cuir",
"Miroir de courtoisie à l'ar éclairé(e)",
"Levier de sélection aluminium",
"Protecteurs de bas de marche noir(e)",
"0 litre(s) 331 kw catalyseur",
"Construction allégée et insonorisant vitrage",
"Equipement int. cuir / race tex",
"Monogramme 911 couleurs chrome",
"lamelles cuir",
"Étriers de frein noir(e) anodisé",
"Volant de direction (alcantara 3 branches) avec palettes changement vitesse",
"Dispositif de freinage céramique (porsche ceramic composite brake",
"8 litre(s) 320 kw catalyseur",
"Jantes alliage léger (argent",
"0 litre(s) 353 kw turbo catalyseur",
"Pack sport chrono avec porsche design subsecond montre",
"Pack suppl. intérieur: panneau de porte cuir",
"Sièges sport dossiers cuir",
"Mode de transmission transmission intégrale",
"pccb)",
"Moyeu volant de direction cuir",
"Targa",
"8 litre(s) 261 kw catalyseur",
"Volant de direction chauffant(e)/dégivrant(e) (cuir) avec multifonctions",
"Gt3 rs",
"Éclairage ambiant orienté vers l'arrière",
"Système d'airbag crânien porsche side impact protection system (posip)",
"7 litre(s) 405 kw turbo catalyseur",
"Gt2 rs",
"Projecteur principal led compr. porsche dynamic light système (pdls)",
"compr. porsche dynamic light système plus (pdls+)",
"8 litre(s) 294 kw catalyseur",
"Pack design sport noir(e)",
"Système d'assistance de conduite: système d'aide au stationnement av et ar compr. caméra aide au recul et surround view",
"6 litre(s) 471 kw)",
"Aile av carbone couleur caisse",
"Garniture de pavillon alcantara",
"Étriers de frein noir(e) (brillant)",
"Régulateur du couple d'inertie du moteur (msr)",
"Sièges baquet av",
"0 litre(s) 309 kw catalyseur",
"Arceaux targa platinum éclat soyeux",
"Moteur 3",
"Surtapis avec bordure cuir",
"Rétroviseur ext cache de rétroviseur peint",
"Aéro kit turbo",
"Protection volumétrique (système infrarouge)",
"Arceau de sécurité / cage",
"Système de freinage renforcé(e)",
"Volant de direction (gt sport cuir) avec palettes changement vitesse",
"Colonne de direction (volant de direction) réglable(s)",
"Déflecteur d'air lat sideblade carbone",
"Direction assistée à commande électronique (servotronic)",
"Garniture de pavillon tissu",
"Appuie têtes av avec porsche",
"Carrosserie: 2 portes",
"Hybride 398 kw (moteur 3",
"Moteur électrique 41 kw (transmission hybride)",
"Pack touring",
"embout inox",
"8 litre(s) 446 kw turbo catalyseur",
"couvercle compartiment/vide poches cuir avec monogramme spécifique et coutures couleur contrastante",
"Protecteurs de bas de marche (carbone) éclairé(e)",
"Système d'assistance de conduite: assistance au démarrage en côte (hill holder)",
"Porsche active suspension management (pasm)",
"0 litre(s) 290 kw turbo catalyseur",
"Cde vocale pour pcm",
"Chassis/suspension sport surbaissé(e) (20 mm)",
"Étoiles de jantes peint (de couleur différente)",
"Bouchon de réservoir finition/aspect alu",
"Embout sortie de ceinture pied milieu cuir",
"Pack intérieur: bois",
"8 litre(s) 390 kw turbo catalyseur",
"Rétroviseur ext couverture carbone (sport design)",
"Éclairage diurne led 4 points",
"Cadre/encadrement combiné d'instruments finition/aspect alu",
"Enjoliveurs de vitre aluminium",
"Pack suppl. intérieur: façade de commande et panneau de porte cuir",
"6 litre(s) 357 kw)",
"Equipement int. cuir alcantara",
"Moteur 4",
"Spoiler ar. couleur caisse",
"Protecteurs de bas de marche (aluminium dark silver) éclairé(e)",
"Levier de sélection des rapports enjoliveur finition/aspect alu",
"Eclaireur de plancher à l'ar",
"Cadre/encadrement combiné d'instruments cuir",
"Ceinture de sécurité à 6 points coté passager",
"Monogramme 911 noir(e)",
"Volant de direction (gt sport / race tex) avec multifonctions et palettes changement vitesse",
"Volant de direction avec palettes changement vitesse (vareq suppl. pour volant de direction)",
"cache peint",
"Projecteur principal led compr. porsche dynamic light système plus (pdls+)",
"compte tours",
"Colonne de direction (volant de direction) à réglages électriques",
"Pare soleil avec miroir(s) (éclairé(e))",
"Equipement int. cuir brillant",
"Sticker / bandes décoratives lat",
"E gaz",
"Kit de réparation des pneumatiques",
"métallisé peint)",
"Sièges sport plus dossiers cuir avec dans une couleur différente coutures",
"0 litre(s) 386 kw catalyseur",
"Réception radio digital(e) (dab+)",
"Airbag lat av",
"Sièges baquet sport av",
"Siège baquet av gauche",
"décor cuir",
"Volant de direction (gt sport alcantara / race tex) avec palettes changement vitesse",
"brossé)",
"coutures en couleur contrastante argent)",
"Projecteurs bi xénon compr. porsche dynamic light système (pdls)",
"Sièges baquets allégés av",
"Projecteurs légers",
"coutures dans/en/au couleur contrastante)",
"Protecteurs de bas de marche (inox) éclairé(e)",
"Jantes alliage léger (métallisé peint)",
"Sellerie : alcantara / simili cuir",
"Grille d'entrée d'air peint",
"éclairé(e) (aluminium noir(e)",
"Boîte de vitesses 7 rapports boîte automatique à double embrayage (pdk)",
"Feux de brouillard ar",
"Sound package plus",
"Norme de dépollution euro 6e",
"Pack suppl. intérieur: façade de commande cuir",
"0 litre(s) 383 kw catalyseur",
"Éclairage directionnel",
"de couleur différente",
"Moyeu volant de direction avec coutures de couleur différente (de couleur différente)",
"6 litre(s) 331 kw turbo catalyseur",
"Rétroviseur ext peint",
"Enjoliveurs de vitre noir(e) (brillant)",
"Essuie vitre ar.",
"8 litre(s) 383 kw turbo catalyseur",
"Volant de direction (cuir lisse/sport",
"Pack clubsport",
"Sièges ar (2 places assises) dossiers ar rabattable",
"Airbag tête epaules av (thoraxbag)",
"Direction assistée plus (asservie à la vitesse)",
"8 litre(s) 412 kw turbo catalyseur",
"Batterie légère (lithium ion)",
"6 litre(s) 456 kw turbo catalyseur",
"étendu sellerie cuir",
"Ionisateur d'air",
"embout av carbone",
"Rétroviseur ext à réglage électrique et dégivrant",
"Repose pied finition/aspect sport",
"compr. porsche dynamic light système (pdls)",
"Levier de sélection cuir",
"Pack intérieur: cuir",
"padm)",
"Dossier ar deux parties",
"Siège av gauche à réglages électriques (avec memory)",
"Panneau de porte construction allégée",
"Sport touche",
"matelassé(e) (vareq suppl. vers volant de direction)",
"Mode de transmission roues ar motrices",
"Pot d'échappement sport",
"Porsche torque vectoring (ptv)",
"Rétroviseur ext à réglages électriques",
"Automatique freins différentiel (abd)",
"Moyeux caches porsche couleur",
"Rétroviseur ext partie inférieure peint (sport design)",
"Pare brise avec antenne",
"0 litre(s) 283 kw turbo catalyseur",
"Equipement int. cuir nature",
"Porsche torque vectoring plus (ptv plus)",
"Pack memory conducteur",
"Embout sport finition/aspect 4 embouts",
"3. feu stop",
"Habillages de bas de caisse couleur caisse design sport",
"Equipement int. microfibre race tex",
"0 litre(s) 272 kw catalyseur",
"surteinté",
"Sièges sport plus dossiers peint",
"Dossier ar fractionné (40:20:40)",
"6 litre(s) 353 kw turbo catalyseur",
"Habillage de colonne de direction cuir avec dans une couleur différente coutures",
"Lave phares (lave projecteurs)",
"Arceaux targa noir(e)",
"Pare soleil race tex",
"Couvercle boite à fusibles cuir",
"Commande de capote manuel(le)",
"Chargeur à induction pour smartphone (charge sans fil)",
"Hardtop (cabriolet)",
"4 litre(s) 257 kw catalyseur",
"Equipement int. diffuseurs d'air cuir",
"Pare brise avec bandeau pare soleil supérieur(e)",
"Porsche design subsecond montre",
"Dynamique support moteur (porsche active drivetrain mount",
"Siège baquet av droit",
"Equipement int. équipement de série / race tex",
"Porsche management de traction (ptm)",
"Sellerie : cuir / alcantara",
"feux à LED",
"Pack éclairage int / pack design lumière",
"Blocage transversal essieu ar mécanique",
"Pré équipement téléphone/téléphone mobile avec interface bluetooth",
"Rétroviseur ext partie inférieure couleur caisse et pied de rétroviseur noir(e) (finition brillante) peint",
"Boîte de vitesses 7 rapports sport boîte automatique à double embrayage (pdk)",
"Porsche communications management (pcm) compr. online module de navigation",
"Supports isofix pour siège enfant sur siège passager",
"8 litre(s) 316 kw catalyseur",
"Vehicle tracking system (pvts)",
"Allumage automatique pour feux de croisement",
"lamelles finition/aspect alu",
"6 litre(s) 280 kw catalyseur",
"Habillage de bas de caisse int. cuir",
"Habillage av. sport design",
"Partie inf ar sport design peint (noir(e))",
"6 litre(s) 239 kw catalyseur",
"Pare soleil cuir",
"tons cuir de série",
"système d'appel d'urgence",
"Gt3 cup",
"2 directions)",
"Pack sport léger",
"Jantes alliage léger (gris",
"4 directions)",
"0 litre(s) 375 kw catalyseur",
"Sièges sport électrique (14 directions) compr. pack memoire",
"Afficheur multifonctions / ordinateur de bord",
"Services online mobile android auto",
"Dispositif antivol pour roues (écrous antivol)",
"Phares à matrice de led compr. porsche dynamic light système plus (pdls+)",
"Appuie têtes av et ar avec porsche",
"Attaché case cuir",
"Levier de sélection alcantara / race tex",
"Éclairage ambiant garniture de pavillon",
"Pack accent argent",
"Rétroviseur ext sport design",
"Réservoir à carburant: 64 litre(s)",
"Combiné d'instruments avec fond noir(e)",
"Système d'assistance de conduite: système d'aide au stationnement avec caméra aide au recul",
"Siège ventilé av",
"Pack intérieur: diamar dark silver",
"Monogramme indication de version lat",
"Feux ar. non teinté / glace aspect lisse",
"noir(e)",
"Bouchon de réservoir exclusive design",
"(d+g)",
"Verrouillage centralisé avec cde radio à distance",
"Boîte de vitesses 8 rapports boîte automatique à double embrayage (pdk)",
"Equipement int. cuir / tissu",
"Sièges sport plus (à réglages électriques",
"Surtapis heritage design",
"Étriers de frein rouge peint",
"Porsche communications management (pcm) compr. dvd module de navigation (étendu)",
"8 litre(s) 515 kw turbo catalyseur",
"Peinture unie",
"8 litre(s) 331 kw catalyseur",
"8 litre(s) 427 kw turbo catalyseur",
"Bandes décoratives sport automobile",
"8 litre(s) 350 kw catalyseur",
"8 litre(s) 283 kw catalyseur",
"bi ton",
"Hybride 523 kw (moteur 3",
"Glace triangulaire carbone",
"Boîte automatique tiptronic (5 rapports)",
"Patère dossier cuir",
"Moyeux avec fermeture centrale",
"Pack design heritage",
"8 litre(s) 397 kw turbo catalyseur",
"Système de pédales et repose pied dans finition/aspect sport",
"Système audio porsche cdr 30 (radio/lecteur cd)",
"Chassis/suspension sport (pasm) à commande électronique",
"Système audio porsche cdr 31 (radio/lecteur cd)",
"paldao",
"Rétroviseur ext asphérique",
"Norme de dépollution euro 5",
"Accès confort (sans clé déverrouillage de porte)",
"Equipement int. enjoliveur façade de commande finition/aspect alu"
],
"all_characteristics": {
"vehicle": {
"co2": {
"combined": 233,
"reliable": false,
"ecoBonusMalus": 0
},
"make": "PORSCHE",
"cubic": 2981,
"label": "(992) COUPE 3.0 385 CARRERA BVA7",
"model": "911",
"packs": [
{
"name": "Pack intérieur Aluminium brossé"
},
{
"name": "Pack intérieur Carbone"
},
{
"name": "Pack intérieur peint"
}
],
"energy": "ESSENCE",
"length": 4519,
"critair": {
"standardMet": "EURO6",
"critairLevel": "1",
"isConversionAllowance": false
},
"gearbox": "AUTOMATIQUE",
"options": [
{
"name": "Intérieur cuir"
},
{
"name": "Intérieur tout cuir"
},
{
"name": "Peinture spéciale"
}
],
"category": "COUPE",
"powerDin": 385,
"standard": "WLTP",
"nbOfDoors": 2,
"equipments": [
{
"label": "Volant cuir",
"category": "Intérieur"
},
{
"label": "Antipatinage",
"category": "Sécurité"
},
{
"label": "Ordinateur de bord",
"category": "Intérieur"
},
{
"label": "Alarme",
"category": "Antivol"
},
{
"label": "ABS",
"category": "Sécurité"
},
{
"label": "Bluetooth",
"category": "Intérieur"
},
{
"label": "Régulateur de vitesse",
"category": "Intérieur"
},
{
"label": "4 roues directrices",
"category": "Exterieur et chassis"
},
{
"label": "Aide parking",
"category": "Exterieur et chassis"
},
{
"label": "Airbag frontal",
"category": "Securite"
},
{
"label": "Anti démarrage",
"category": "Antivol"
},
{
"label": "ASR",
"category": "Securite"
},
{
"label": "Becquet",
"category": "Exterieur et chassis"
},
{
"label": "Caméra de recul",
"category": "Interieur"
},
{
"label": "Carnet d'entretien",
"category": "Autre"
},
{
"label": "Carte main libre",
"category": "Interieur"
},
{
"label": "Climatisation automatique",
"category": "Interieur"
},
{
"label": "Climatisation automatique multi zone",
"category": "Interieur"
},
{
"label": "Contrôle de pression des pneus",
"category": "Securite"
},
{
"label": "Détecteur de pluie",
"category": "Securite"
},
{
"label": "Différentiel autobloquant",
"category": "Exterieur et chassis"
},
{
"label": "Direction assistée",
"category": "Interieur"
},
{
"label": "FAP",
"category": "Autre"
},
{
"label": "Fermeture électrique",
"category": "Interieur"
},
{
"label": "Frein de parking automatique",
"category": "Exterieur et chassis"
},
{
"label": "Jantes alu",
"category": "Exterieur et chassis"
},
{
"label": "Non fumeur",
"category": "Autre"
},
{
"label": "Pack cuir",
"category": "Interieur"
},
{
"label": "Pack sport",
"category": "Exterieur et chassis"
},
{
"label": "Peinture métallisée",
"category": "Exterieur et chassis"
},
{
"label": "Prise audio USB",
"category": "Interieur"
},
{
"label": "Projecteurs bi-xénon",
"category": "Exterieur et chassis"
},
{
"label": "Projecteurs xénon",
"category": "Exterieur et chassis"
},
{
"label": "Sièges électriques",
"category": "Interieur"
},
{
"label": "Suspension sport",
"category": "Exterieur et chassis"
},
{
"label": "Système audio BOSE",
"category": "Interieur"
},
{
"label": "Système audio MP3",
"category": "Interieur"
},
{
"label": "Système Start & Stop",
"category": "Autre"
},
{
"label": "Vitres électriques",
"category": "Interieur"
},
{
"label": "Pack accent noir(e)",
"category": "Autre"
},
{
"label": "Siège chauffant av",
"category": "Autre"
},
{
"label": "6 litre(s) 390 kw turbo catalyseur",
"category": "Autre"
},
{
"label": "Pavillon carbone",
"category": "Autre"
},
{
"label": "Rétroviseur ext noir(e) peint",
"category": "Autre"
},
{
"label": "Sellerie : cuir partiel",
"category": "Autre"
},
{
"label": "Lunette ar. chauffant(e)/dégivrant(e)",
"category": "Autre"
},
{
"label": "Système audio porsche cdr avec ecran tactile couleur (radio/lecteur cd)",
"category": "Autre"
},
{
"label": "Equipement int. enjoliveur façade de commande carbone",
"category": "Autre"
},
{
"label": "Cadran couleur",
"category": "Autre"
},
{
"label": "Pack suppl. intérieur: ar. cuir",
"category": "Autre"
},
{
"label": "Volant de direction (sport 3 branches)",
"category": "Autre"
},
{
"label": "Levier de sélection et poignée de frein à main alcantara",
"category": "Autre"
},
{
"label": "6 litre(s) 254 kw catalyseur",
"category": "Autre"
},
{
"label": "Sticker / bandes décoratives numéro de course",
"category": "Autre"
},
{
"label": "Suppression sièges ar",
"category": "Autre"
},
{
"label": "Restylage fb (option interne)",
"category": "Autre"
},
{
"label": "Vitrage teinté(e)",
"category": "Autre"
},
{
"label": "Voie élargie sur train ar",
"category": "Autre"
},
{
"label": "Système de pédales et repose pied en aluminium",
"category": "Autre"
},
{
"label": "Habillages de bas de caisse peint",
"category": "Autre"
},
{
"label": "capote électrique",
"category": "Autre"
},
{
"label": "avec monogramme individual",
"category": "Autre"
},
{
"label": "Mode de transmission traction intégrale permanente",
"category": "Autre"
},
{
"label": "Equipement int. enjoliveur façade de commande peint",
"category": "Autre"
},
{
"label": "Étriers de frein jaune peint",
"category": "Autre"
},
{
"label": "8 litre(s) 478 kw turbo catalyseur",
"category": "Autre"
},
{
"label": "Equipement int. enjoliveur façade de commande cuir",
"category": "Autre"
},
{
"label": "Support à boissons embout cuir",
"category": "Autre"
},
{
"label": "Combiné d'instruments avec fond argent",
"category": "Autre"
},
{
"label": "Chassis/suspensions surbaissé(e)",
"category": "Autre"
},
{
"label": "Arceau de sécurité noir(e)",
"category": "Autre"
},
{
"label": "Déflecteur d'air électrique",
"category": "Autre"
},
{
"label": "Monogramme porsche peint",
"category": "Autre"
},
{
"label": "0 litre(s) 368 kw catalyseur",
"category": "Autre"
},
{
"label": "Spoiler av. couleur caisse",
"category": "Autre"
},
{
"label": "Boîte de vitesses 6 rapports sport",
"category": "Autre"
},
{
"label": "Pack intérieur coutures dans une couleur différente",
"category": "Autre"
},
{
"label": "Cadran compte tours",
"category": "Autre"
},
{
"label": "Essuie vitres avec capteur de pluie",
"category": "Autre"
},
{
"label": "Monte charge train av",
"category": "Autre"
},
{
"label": "sport chrono chronomètre",
"category": "Autre"
},
{
"label": "Volant de direction (sport/cuir",
"category": "Autre"
},
{
"label": "Rétroviseur ext rabattable électriquement",
"category": "Autre"
},
{
"label": "Système d'airbag crânien (airbag curtain)",
"category": "Autre"
},
{
"label": "Volant de direction chauffant(e)/dégivrant(e) (gt sport / race tex) avec multifonctions et palettes changement vitesse",
"category": "Autre"
},
{
"label": "Garniture de pavillon race tex",
"category": "Autre"
},
{
"label": "Pré équipement vehicle tracking system",
"category": "Autre"
},
{
"label": "Sièges sport av",
"category": "Autre"
},
{
"label": "recouvrements cuir",
"category": "Autre"
},
{
"label": "6 litre(s) 305 kw catalyseur",
"category": "Autre"
},
{
"label": "Norme de dépollution euro 6d temp",
"category": "Autre"
},
{
"label": "Volant de direction (cuir 3 branches) avec palettes changement vitesse",
"category": "Autre"
},
{
"label": "8 litre(s) 368 kw turbo catalyseur",
"category": "Autre"
},
{
"label": "Volant de direction chauffant(e)/dégivrant(e) (gt sport / cuir) avec multifonctions et palettes changement vitesse",
"category": "Autre"
},
{
"label": "Ceintures de sécurité couleur",
"category": "Autre"
},
{
"label": "Système audio porsche cdr 24 (radio/lecteur cd)",
"category": "Autre"
},
{
"label": "filtre à pollen",
"category": "Autre"
},
{
"label": "6 litre(s) 340 kw turbo catalyseur",
"category": "Autre"
},
{
"label": "embout noir(e)",
"category": "Autre"
},
{
"label": "Supports isofix pour siège enfant sur siège ar",
"category": "Autre"
},
{
"label": "décor peint",
"category": "Autre"
},
{
"label": "Adaptatif sièges sport compr. réglage de siège 18 directions et pack memoire",
"category": "Autre"
},
{
"label": "Rétroviseur int cuir",
"category": "Autre"
},
{
"label": "Interface universelle audio",
"category": "Autre"
},
{
"label": "Console centrale ar cuir",
"category": "Autre"
},
{
"label": "Porsche stability management (psm)",
"category": "Autre"
},
{
"label": "6 litre(s) 355 kw turbo catalyseur",
"category": "Autre"
},
{
"label": "Déflecteur spoiler av. couleur caisse",
"category": "Autre"
},
{
"label": "appuis d'aile noir(e)",
"category": "Autre"
},
{
"label": "3 branches) avec multifonctions",
"category": "Autre"
},
{
"label": "Siège av gauche et rétroviseur ext avec fonction mémoire (mémoire conducteur)",
"category": "Autre"
},
{
"label": "Système d'assistance de conduite: assistant maintien de trajectoire",
"category": "Autre"
},
{
"label": "clignotants LED",
"category": "Autre"
},
{
"label": "Equipement int. cuir / sport tex",
"category": "Autre"
},
{
"label": "Monogramme série peint",
"category": "Autre"
},
{
"label": "Volant de direction chauffant(e)/dégivrant(e) (microfibre race tex) avec multifonctions",
"category": "Autre"
},
{
"label": "Moyeu volant de direction et levier de sélection cuir lisse",
"category": "Autre"
},
{
"label": "8 litre(s) 300 kw catalyseur",
"category": "Autre"
},
{
"label": "Chassis/suspensions pour sport automobile réglable",
"category": "Autre"
},
{
"label": "Clés véhicule couleur caisse peint compr. étui cuir",
"category": "Autre"
},
{
"label": "Miroir de courtoisie à l'ar éclairé(e)",
"category": "Autre"
},
{
"label": "Levier de sélection aluminium",
"category": "Autre"
},
{
"label": "Protecteurs de bas de marche noir(e)",
"category": "Autre"
},
{
"label": "0 litre(s) 331 kw catalyseur",
"category": "Autre"
},
{
"label": "Construction allégée et insonorisant vitrage",
"category": "Autre"
},
{
"label": "Equipement int. cuir / race tex",
"category": "Autre"
},
{
"label": "Monogramme 911 couleurs chrome",
"category": "Autre"
},
{
"label": "lamelles cuir",
"category": "Autre"
},
{
"label": "Étriers de frein noir(e) anodisé",
"category": "Autre"
},
{
"label": "Volant de direction (alcantara 3 branches) avec palettes changement vitesse",
"category": "Autre"
},
{
"label": "Dispositif de freinage céramique (porsche ceramic composite brake",
"category": "Autre"
},
{
"label": "8 litre(s) 320 kw catalyseur",
"category": "Autre"
},
{
"label": "Jantes alliage léger (argent",
"category": "Autre"
},
{
"label": "0 litre(s) 353 kw turbo catalyseur",
"category": "Autre"
},
{
"label": "Pack sport chrono avec porsche design subsecond montre",
"category": "Autre"
},
{
"label": "Pack suppl. intérieur: panneau de porte cuir",
"category": "Autre"
},
{
"label": "Sièges sport dossiers cuir",
"category": "Autre"
},
{
"label": "Mode de transmission transmission intégrale",
"category": "Autre"
},
{
"label": "pccb)",
"category": "Autre"
},
{
"label": "Moyeu volant de direction cuir",
"category": "Autre"
},
{
"label": "Targa",
"category": "Autre"
},
{
"label": "8 litre(s) 261 kw catalyseur",
"category": "Autre"
},
{
"label": "Volant de direction chauffant(e)/dégivrant(e) (cuir) avec multifonctions",
"category": "Autre"
},
{
"label": "Gt3 rs",
"category": "Autre"
},
{
"label": "Éclairage ambiant orienté vers l'arrière",
"category": "Autre"
},
{
"label": "Système d'airbag crânien porsche side impact protection system (posip)",
"category": "Autre"
},
{
"label": "7 litre(s) 405 kw turbo catalyseur",
"category": "Autre"
},
{
"label": "Gt2 rs",
"category": "Autre"
},
{
"label": "Projecteur principal led compr. porsche dynamic light système (pdls)",
"category": "Autre"
},
{
"label": "compr. porsche dynamic light système plus (pdls+)",
"category": "Autre"
},
{
"label": "8 litre(s) 294 kw catalyseur",
"category": "Autre"
},
{
"label": "Pack design sport noir(e)",
"category": "Autre"
},
{
"label": "Système d'assistance de conduite: système d'aide au stationnement av et ar compr. caméra aide au recul et surround view",
"category": "Autre"
},
{
"label": "6 litre(s) 471 kw)",
"category": "Autre"
},
{
"label": "Aile av carbone couleur caisse",
"category": "Autre"
},
{
"label": "Garniture de pavillon alcantara",
"category": "Autre"
},
{
"label": "Étriers de frein noir(e) (brillant)",
"category": "Autre"
},
{
"label": "Régulateur du couple d'inertie du moteur (msr)",
"category": "Autre"
},
{
"label": "Sièges baquet av",
"category": "Autre"
},
{
"label": "0 litre(s) 309 kw catalyseur",
"category": "Autre"
},
{
"label": "Arceaux targa platinum éclat soyeux",
"category": "Autre"
},
{
"label": "Moteur 3",
"category": "Autre"
},
{
"label": "Surtapis avec bordure cuir",
"category": "Autre"
},
{
"label": "Rétroviseur ext cache de rétroviseur peint",
"category": "Autre"
},
{
"label": "Aéro kit turbo",
"category": "Autre"
},
{
"label": "Protection volumétrique (système infrarouge)",
"category": "Autre"
},
{
"label": "Arceau de sécurité / cage",
"category": "Autre"
},
{
"label": "Système de freinage renforcé(e)",
"category": "Autre"
},
{
"label": "Volant de direction (gt sport cuir) avec palettes changement vitesse",
"category": "Autre"
},
{
"label": "Colonne de direction (volant de direction) réglable(s)",
"category": "Autre"
},
{
"label": "Déflecteur d'air lat sideblade carbone",
"category": "Autre"
},
{
"label": "Direction assistée à commande électronique (servotronic)",
"category": "Autre"
},
{
"label": "Garniture de pavillon tissu",
"category": "Autre"
},
{
"label": "Appuie têtes av avec porsche",
"category": "Autre"
},
{
"label": "Carrosserie: 2 portes",
"category": "Autre"
},
{
"label": "Hybride 398 kw (moteur 3",
"category": "Autre"
},
{
"label": "Moteur électrique 41 kw (transmission hybride)",
"category": "Autre"
},
{
"label": "Pack touring",
"category": "Autre"
},
{
"label": "embout inox",
"category": "Autre"
},
{
"label": "8 litre(s) 446 kw turbo catalyseur",
"category": "Autre"
},
{
"label": "couvercle compartiment/vide poches cuir avec monogramme spécifique et coutures couleur contrastante",
"category": "Autre"
},
{
"label": "Protecteurs de bas de marche (carbone) éclairé(e)",
"category": "Autre"
},
{
"label": "Système d'assistance de conduite: assistance au démarrage en côte (hill holder)",
"category": "Autre"
},
{
"label": "Porsche active suspension management (pasm)",
"category": "Autre"
},
{
"label": "0 litre(s) 290 kw turbo catalyseur",
"category": "Autre"
},
{
"label": "Cde vocale pour pcm",
"category": "Autre"
},
{
"label": "Chassis/suspension sport surbaissé(e) (20 mm)",
"category": "Autre"
},
{
"label": "Étoiles de jantes peint (de couleur différente)",
"category": "Autre"
},
{
"label": "Bouchon de réservoir finition/aspect alu",
"category": "Autre"
},
{
"label": "Embout sortie de ceinture pied milieu cuir",
"category": "Autre"
},
{
"label": "Pack intérieur: bois",
"category": "Autre"
},
{
"label": "8 litre(s) 390 kw turbo catalyseur",
"category": "Autre"
},
{
"label": "Rétroviseur ext couverture carbone (sport design)",
"category": "Autre"
},
{
"label": "Éclairage diurne led 4 points",
"category": "Autre"
},
{
"label": "Cadre/encadrement combiné d'instruments finition/aspect alu",
"category": "Autre"
},
{
"label": "Enjoliveurs de vitre aluminium",
"category": "Autre"
},
{
"label": "Pack suppl. intérieur: façade de commande et panneau de porte cuir",
"category": "Autre"
},
{
"label": "6 litre(s) 357 kw)",
"category": "Autre"
},
{
"label": "Equipement int. cuir alcantara",
"category": "Autre"
},
{
"label": "Moteur 4",
"category": "Autre"
},
{
"label": "Spoiler ar. couleur caisse",
"category": "Autre"
},
{
"label": "Protecteurs de bas de marche (aluminium dark silver) éclairé(e)",
"category": "Autre"
},
{
"label": "Levier de sélection des rapports enjoliveur finition/aspect alu",
"category": "Autre"
},
{
"label": "Eclaireur de plancher à l'ar",
"category": "Autre"
},
{
"label": "Cadre/encadrement combiné d'instruments cuir",
"category": "Autre"
},
{
"label": "Ceinture de sécurité à 6 points coté passager",
"category": "Autre"
},
{
"label": "Monogramme 911 noir(e)",
"category": "Autre"
},
{
"label": "Volant de direction (gt sport / race tex) avec multifonctions et palettes changement vitesse",
"category": "Autre"
},
{
"label": "Volant de direction avec palettes changement vitesse (vareq suppl. pour volant de direction)",
"category": "Autre"
},
{
"label": "cache peint",
"category": "Autre"
},
{
"label": "Projecteur principal led compr. porsche dynamic light système plus (pdls+)",
"category": "Autre"
},
{
"label": "compte tours",
"category": "Autre"
},
{
"label": "Colonne de direction (volant de direction) à réglages électriques",
"category": "Autre"
},
{
"label": "Pare soleil avec miroir(s) (éclairé(e))",
"category": "Autre"
},
{
"label": "Equipement int. cuir brillant",
"category": "Autre"
},
{
"label": "Sticker / bandes décoratives lat",
"category": "Autre"
},
{
"label": "E gaz",
"category": "Autre"
},
{
"label": "Kit de réparation des pneumatiques",
"category": "Autre"
},
{
"label": "métallisé peint)",
"category": "Autre"
},
{
"label": "Sièges sport plus dossiers cuir avec dans une couleur différente coutures",
"category": "Autre"
},
{
"label": "0 litre(s) 386 kw catalyseur",
"category": "Autre"
},
{
"label": "Réception radio digital(e) (dab+)",
"category": "Autre"
},
{
"label": "Airbag lat av",
"category": "Autre"
},
{
"label": "Sièges baquet sport av",
"category": "Autre"
},
{
"label": "Siège baquet av gauche",
"category": "Autre"
},
{
"label": "décor cuir",
"category": "Autre"
},
{
"label": "Volant de direction (gt sport alcantara / race tex) avec palettes changement vitesse",
"category": "Autre"
},
{
"label": "brossé)",
"category": "Autre"
},
{
"label": "coutures en couleur contrastante argent)",
"category": "Autre"
},
{
"label": "Projecteurs bi xénon compr. porsche dynamic light système (pdls)",
"category": "Autre"
},
{
"label": "Sièges baquets allégés av",
"category": "Autre"
},
{
"label": "Projecteurs légers",
"category": "Autre"
},
{
"label": "coutures dans/en/au couleur contrastante)",
"category": "Autre"
},
{
"label": "Protecteurs de bas de marche (inox) éclairé(e)",
"category": "Autre"
},
{
"label": "Jantes alliage léger (métallisé peint)",
"category": "Autre"
},
{
"label": "Sellerie : alcantara / simili cuir",
"category": "Autre"
},
{
"label": "Grille d'entrée d'air peint",
"category": "Autre"
},
{
"label": "éclairé(e) (aluminium noir(e)",
"category": "Autre"
},
{
"label": "Boîte de vitesses 7 rapports boîte automatique à double embrayage (pdk)",
"category": "Autre"
},
{
"label": "Feux de brouillard ar",
"category": "Autre"
},
{
"label": "Sound package plus",
"category": "Autre"
},
{
"label": "Norme de dépollution euro 6e",
"category": "Autre"
},
{
"label": "Pack suppl. intérieur: façade de commande cuir",
"category": "Autre"
},
{
"label": "0 litre(s) 383 kw catalyseur",
"category": "Autre"
},
{
"label": "Éclairage directionnel",
"category": "Autre"
},
{
"label": "de couleur différente",
"category": "Autre"
},
{
"label": "Moyeu volant de direction avec coutures de couleur différente (de couleur différente)",
"category": "Autre"
},
{
"label": "6 litre(s) 331 kw turbo catalyseur",
"category": "Autre"
},
{
"label": "Rétroviseur ext peint",
"category": "Autre"
},
{
"label": "Enjoliveurs de vitre noir(e) (brillant)",
"category": "Autre"
},
{
"label": "Essuie vitre ar.",
"category": "Autre"
},
{
"label": "8 litre(s) 383 kw turbo catalyseur",
"category": "Autre"
},
{
"label": "Volant de direction (cuir lisse/sport",
"category": "Autre"
},
{
"label": "Pack clubsport",
"category": "Autre"
},
{
"label": "Sièges ar (2 places assises) dossiers ar rabattable",
"category": "Autre"
},
{
"label": "Airbag tête epaules av (thoraxbag)",
"category": "Autre"
},
{
"label": "Direction assistée plus (asservie à la vitesse)",
"category": "Autre"
},
{
"label": "8 litre(s) 412 kw turbo catalyseur",
"category": "Autre"
},
{
"label": "Batterie légère (lithium ion)",
"category": "Autre"
},
{
"label": "6 litre(s) 456 kw turbo catalyseur",
"category": "Autre"
},
{
"label": "étendu sellerie cuir",
"category": "Autre"
},
{
"label": "Ionisateur d'air",
"category": "Autre"
},
{
"label": "embout av carbone",
"category": "Autre"
},
{
"label": "Rétroviseur ext à réglage électrique et dégivrant",
"category": "Autre"
},
{
"label": "Repose pied finition/aspect sport",
"category": "Autre"
},
{
"label": "compr. porsche dynamic light système (pdls)",
"category": "Autre"
},
{
"label": "Levier de sélection cuir",
"category": "Autre"
},
{
"label": "Pack intérieur: cuir",
"category": "Autre"
},
{
"label": "padm)",
"category": "Autre"
},
{
"label": "Dossier ar deux parties",
"category": "Autre"
},
{
"label": "Siège av gauche à réglages électriques (avec memory)",
"category": "Autre"
},
{
"label": "Panneau de porte construction allégée",
"category": "Autre"
},
{
"label": "Sport touche",
"category": "Autre"
},
{
"label": "matelassé(e) (vareq suppl. vers volant de direction)",
"category": "Autre"
},
{
"label": "Mode de transmission roues ar motrices",
"category": "Autre"
},
{
"label": "Pot d'échappement sport",
"category": "Autre"
},
{
"label": "Porsche torque vectoring (ptv)",
"category": "Autre"
},
{
"label": "Rétroviseur ext à réglages électriques",
"category": "Autre"
},
{
"label": "Automatique freins différentiel (abd)",
"category": "Autre"
},
{
"label": "Moyeux caches porsche couleur",
"category": "Autre"
},
{
"label": "Rétroviseur ext partie inférieure peint (sport design)",
"category": "Autre"
},
{
"label": "Pare brise avec antenne",
"category": "Autre"
},
{
"label": "0 litre(s) 283 kw turbo catalyseur",
"category": "Autre"
},
{
"label": "Equipement int. cuir nature",
"category": "Autre"
},
{
"label": "Porsche torque vectoring plus (ptv plus)",
"category": "Autre"
},
{
"label": "Pack memory conducteur",
"category": "Autre"
},
{
"label": "Embout sport finition/aspect 4 embouts",
"category": "Autre"
},
{
"label": "3. feu stop",
"category": "Autre"
},
{
"label": "Habillages de bas de caisse couleur caisse design sport",
"category": "Autre"
},
{
"label": "Equipement int. microfibre race tex",
"category": "Autre"
},
{
"label": "0 litre(s) 272 kw catalyseur",
"category": "Autre"
},
{
"label": "surteinté",
"category": "Autre"
},
{
"label": "Sièges sport plus dossiers peint",
"category": "Autre"
},
{
"label": "Dossier ar fractionné (40:20:40)",
"category": "Autre"
},
{
"label": "6 litre(s) 353 kw turbo catalyseur",
"category": "Autre"
},
{
"label": "Habillage de colonne de direction cuir avec dans une couleur différente coutures",
"category": "Autre"
},
{
"label": "Lave phares (lave projecteurs)",
"category": "Autre"
},
{
"label": "Arceaux targa noir(e)",
"category": "Autre"
},
{
"label": "Pare soleil race tex",
"category": "Autre"
},
{
"label": "Couvercle boite à fusibles cuir",
"category": "Autre"
},
{
"label": "Commande de capote manuel(le)",
"category": "Autre"
},
{
"label": "Chargeur à induction pour smartphone (charge sans fil)",
"category": "Autre"
},
{
"label": "Hardtop (cabriolet)",
"category": "Autre"
},
{
"label": "4 litre(s) 257 kw catalyseur",
"category": "Autre"
},
{
"label": "Equipement int. diffuseurs d'air cuir",
"category": "Autre"
},
{
"label": "Pare brise avec bandeau pare soleil supérieur(e)",
"category": "Autre"
},
{
"label": "Porsche design subsecond montre",
"category": "Autre"
},
{
"label": "Dynamique support moteur (porsche active drivetrain mount",
"category": "Autre"
},
{
"label": "Siège baquet av droit",
"category": "Autre"
},
{
"label": "Equipement int. équipement de série / race tex",
"category": "Autre"
},
{
"label": "Porsche management de traction (ptm)",
"category": "Autre"
},
{
"label": "Sellerie : cuir / alcantara",
"category": "Autre"
},
{
"label": "feux à LED",
"category": "Autre"
},
{
"label": "Pack éclairage int / pack design lumière",
"category": "Autre"
},
{
"label": "Blocage transversal essieu ar mécanique",
"category": "Autre"
},
{
"label": "Pré équipement téléphone/téléphone mobile avec interface bluetooth",
"category": "Autre"
},
{
"label": "Rétroviseur ext partie inférieure couleur caisse et pied de rétroviseur noir(e) (finition brillante) peint",
"category": "Autre"
},
{
"label": "Boîte de vitesses 7 rapports sport boîte automatique à double embrayage (pdk)",
"category": "Autre"
},
{
"label": "Porsche communications management (pcm) compr. online module de navigation",
"category": "Autre"
},
{
"label": "Supports isofix pour siège enfant sur siège passager",
"category": "Autre"
},
{
"label": "8 litre(s) 316 kw catalyseur",
"category": "Autre"
},
{
"label": "Vehicle tracking system (pvts)",
"category": "Autre"
},
{
"label": "Allumage automatique pour feux de croisement",
"category": "Autre"
},
{
"label": "lamelles finition/aspect alu",
"category": "Autre"
},
{
"label": "6 litre(s) 280 kw catalyseur",
"category": "Autre"
},
{
"label": "Habillage de bas de caisse int. cuir",
"category": "Autre"
},
{
"label": "Habillage av. sport design",
"category": "Autre"
},
{
"label": "Partie inf ar sport design peint (noir(e))",
"category": "Autre"
},
{
"label": "6 litre(s) 239 kw catalyseur",
"category": "Autre"
},
{
"label": "Pare soleil cuir",
"category": "Autre"
},
{
"label": "tons cuir de série",
"category": "Autre"
},
{
"label": "système d'appel d'urgence",
"category": "Autre"
},
{
"label": "Gt3 cup",
"category": "Autre"
},
{
"label": "2 directions)",
"category": "Autre"
},
{
"label": "Pack sport léger",
"category": "Autre"
},
{
"label": "Jantes alliage léger (gris",
"category": "Autre"
},
{
"label": "4 directions)",
"category": "Autre"
},
{
"label": "0 litre(s) 375 kw catalyseur",
"category": "Autre"
},
{
"label": "Sièges sport électrique (14 directions) compr. pack memoire",
"category": "Autre"
},
{
"label": "Afficheur multifonctions / ordinateur de bord",
"category": "Autre"
},
{
"label": "Services online mobile android auto",
"category": "Autre"
},
{
"label": "Dispositif antivol pour roues (écrous antivol)",
"category": "Autre"
},
{
"label": "Phares à matrice de led compr. porsche dynamic light système plus (pdls+)",
"category": "Autre"
},
{
"label": "Appuie têtes av et ar avec porsche",
"category": "Autre"
},
{
"label": "Attaché case cuir",
"category": "Autre"
},
{
"label": "Levier de sélection alcantara / race tex",
"category": "Autre"
},
{
"label": "Éclairage ambiant garniture de pavillon",
"category": "Autre"
},
{
"label": "Pack accent argent",
"category": "Autre"
},
{
"label": "Rétroviseur ext sport design",
"category": "Autre"
},
{
"label": "Réservoir à carburant: 64 litre(s)",
"category": "Autre"
},
{
"label": "Combiné d'instruments avec fond noir(e)",
"category": "Autre"
},
{
"label": "Système d'assistance de conduite: système d'aide au stationnement avec caméra aide au recul",
"category": "Autre"
},
{
"label": "Siège ventilé av",
"category": "Autre"
},
{
"label": "Pack intérieur: diamar dark silver",
"category": "Autre"
},
{
"label": "Monogramme indication de version lat",
"category": "Autre"
},
{
"label": "Feux ar. non teinté / glace aspect lisse",
"category": "Autre"
},
{
"label": "noir(e)",
"category": "Autre"
},
{
"label": "Bouchon de réservoir exclusive design",
"category": "Autre"
},
{
"label": "(d+g)",
"category": "Autre"
},
{
"label": "Verrouillage centralisé avec cde radio à distance",
"category": "Autre"
},
{
"label": "Boîte de vitesses 8 rapports boîte automatique à double embrayage (pdk)",
"category": "Autre"
},
{
"label": "Equipement int. cuir / tissu",
"category": "Autre"
},
{
"label": "Sièges sport plus (à réglages électriques",
"category": "Autre"
},
{
"label": "Surtapis heritage design",
"category": "Autre"
},
{
"label": "Étriers de frein rouge peint",
"category": "Autre"
},
{
"label": "Porsche communications management (pcm) compr. dvd module de navigation (étendu)",
"category": "Autre"
},
{
"label": "8 litre(s) 515 kw turbo catalyseur",
"category": "Autre"
},
{
"label": "Peinture unie",
"category": "Autre"
},
{
"label": "8 litre(s) 331 kw catalyseur",
"category": "Autre"
},
{
"label": "8 litre(s) 427 kw turbo catalyseur",
"category": "Autre"
},
{
"label": "Bandes décoratives sport automobile",
"category": "Autre"
},
{
"label": "8 litre(s) 350 kw catalyseur",
"category": "Autre"
},
{
"label": "8 litre(s) 283 kw catalyseur",
"category": "Autre"
},
{
"label": "bi ton",
"category": "Autre"
},
{
"label": "Hybride 523 kw (moteur 3",
"category": "Autre"
},
{
"label": "Glace triangulaire carbone",
"category": "Autre"
},
{
"label": "Boîte automatique tiptronic (5 rapports)",
"category": "Autre"
},
{
"label": "Patère dossier cuir",
"category": "Autre"
},
{
"label": "Moyeux avec fermeture centrale",
"category": "Autre"
},
{
"label": "Pack design heritage",
"category": "Autre"
},
{
"label": "8 litre(s) 397 kw turbo catalyseur",
"category": "Autre"
},
{
"label": "Système de pédales et repose pied dans finition/aspect sport",
"category": "Autre"
},
{
"label": "Système audio porsche cdr 30 (radio/lecteur cd)",
"category": "Autre"
},
{
"label": "Chassis/suspension sport (pasm) à commande électronique",
"category": "Autre"
},
{
"label": "Système audio porsche cdr 31 (radio/lecteur cd)",
"category": "Autre"
},
{
"label": "paldao",
"category": "Autre"
},
{
"label": "Rétroviseur ext asphérique",
"category": "Autre"
},
{
"label": "Norme de dépollution euro 5",
"category": "Autre"
},
{
"label": "Accès confort (sans clé déverrouillage de porte)",
"category": "Autre"
},
{
"label": "Equipement int. enjoliveur façade de commande finition/aspect alu",
"category": "Autre"
}
],
"consumption": {
"combined": 10.3,
"reliable": false
},
"externalColor": "gris",
"internalColor": "cuir",
"maxTrunkVolume": 132,
"commercialModel": "911",
"seatingCapacity": 4,
"firstTrafficDate": "2024-10-07",
"fiscalHorsePower": 27
},
"classified": {
"year": "2024",
"price": 154990,
"title": "PORSCHE 911 TYPE 992",
"status": "ONLINE",
"mileage": 10930,
"zipCode": "06800",
"firstHand": true,
"mappingId": "MDQ1MTEyNzYyMQ==",
"reference": "E118586883",
"visitPlace": "06",
"description": {},
"customerType": "PRO",
"mileageBadge": "MEDIUM_MILEAGE",
"referencePro": "16",
"goodDealBadge": "BAD_DEAL",
"averageMileage": 11151,
"priceVariation": {
"prices": {
"current": 154990,
"history": [
154990,
154990
],
"initial": 154990,
"isDropping": false,
"percentage": 0,
"isPriceCrossed": false
},
"isAgeCapped": false,
"displayedAge": 2
},
"refinedQuotation": 126805,
"reliabilityIndex": 3,
"customerReference": "C060750",
"ownerCorrelationId": "C060750",
"publicationEndDate": "2999-01-01T00:00:00Z",
"constructorWarranty": {
"endDate": "2026-10-06",
"duration": 24
}
}
},
"options_list": [
"Intérieur cuir",
"Intérieur tout cuir",
"Peinture spéciale"
],
"seller_address": "38 CHEMIN DU VALLON DES VAUX, CAGNES-SUR-MER",
"seller_postal_code": "06800",
"seller_name": "MOTORSPORT BY TB",
"seller_category": "INTERMEDIAIRE",
"seller_company_creation_date": "2026-03-11T15:43:25+00:00",
"is_verified_seller": false,
"seller_comment": null,
"vehicle_rating_link": "/cote-auto-porsche-911-(992)+coupe+3.0+385+carrera+bva7-2024.html?km=10930&price=154990&zip-code=06800&version-id=26428228&modelCom=911+type+992&ref=69118586883"ation=126805&trustIndex=3",
"autoviza_history_link": null,
"technical_specifications_link": "/fiche-technique-voiture-porsche-911-(992)+coupe+3.0+385+carrera+bva7-2024.html?version-id=26428228&modelCom=911+type+992",
"co2_emissions": 233.0,
"fiscal_power": 27.0,
"engine_power_hp": 385.0,
"number_of_seats": 4,
"cylinder_capacity": 2981.0,
"battery_consumption": null,
"battery_capacity": null,
"electric_range": null,
"is_plug_in_hybrid": null,
"vehicle_length": 4519,
"max_trunk_volume": 132,
"first_traffic_date": "2024-10-06",
"critair_level": "1",
"euro_standard": "EURO6",
"price_variation": {
"prices": {
"current": 154990,
"history": [
154990,
154990
],
"initial": 154990,
"isDropping": false,
"percentage": 0,
"isPriceCrossed": false
},
"isAgeCapped": false,
"displayedAge": 2
},
"average_mileage_for_year": 11151,
"warranty_months": 24,
"warranty_end_date": "2026-10-05",
"is_first_hand": true,
"number_of_owners": null,
"mapping_id": "MDQ1MTEyNzYyMQ==",
"functions": null,
"native_id": 52300
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/lacentrale-cars-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the LaCentrale Cars Scraper settings
Configure your LaCentrale Cars Scraper squid settings. Control pagination, result limits, time filters, and whether to fetch detailed listing information.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_pages** | integer | 347 | Maximum pages to scrape per task (max: 347) |
| **max\_results** | integer | unlimited | Maximum results per task |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks |
| **fetch\_since** | string | null | Stop scraping when items older than this threshold are reached (based on `first_online_date`). Use a relative duration (24h, 7d, 2w) or an absolute date (YYYY-MM-DD) |
| **fetch\_since\_timezone** | string | null | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Only applies when `fetch_since` is an absolute date — ignored for relative values like `24h` or `7d`. See [supported timezones](/docs/timezones). |
| **get\_listing\_details** | boolean | true | Fetch detailed listing info (equipment, seller details) |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
## Listing Details Option
When `get_listing_details` is enabled, the scraper visits each listing page to extract:
* Full equipment list and options
* Seller details (address, company info)
* Technical specifications (CO2, power, fuel consumption)
* Vehicle history links
**Pricing:** 4 credits per listing when details are enabled.
## Fetch Since Filter
Use `fetch_since` to monitor new inventory. For example, setting `fetch_since: 24h` will stop scraping when it reaches listings older than 24 hours (based on `first_online_date`).
Perfect for daily monitoring of new car listings.
Set `get_listing_details: false` if you only need basic listing data to reduce costs.
Enabling `get_listing_details` costs 4 additional credits per listing. Plan accordingly for large scrapes.
Use `fetch_since: 12` for twice-daily monitoring to catch new listings without duplicates.
**Backward compatibility:** The old parameter name `annonce_details` is still accepted but deprecated. Migrate to `get_listing_details`.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "LaCentrale Cars Scraper (1)",
"concurrency": 5,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_pages": 50,
"fetch_since": "7d",
"get_listing_details": true
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Update squid settings
payload = {
"name": "LaCentrale Cars Scraper (1)",
"concurrency": 5,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_pages": 50, # Limit pages to scrape
"fetch_since": "7d", # Only listings from last 24 hours
"get_listing_details": True # Fetch detailed listing info
}
}
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json=payload
)
print(f"Settings updated: {response.json()['name']}")
```
## Response
```json 201 theme={null}
{
"name": "LaCentrale Cars Scraper (1)",
"concurrency": 5,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_pages": 50,
"fetch_since": "7d",
"get_listing_details": true
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/lacentrale-listing-status-checker/add-tasks
POST https://api.lobstr.io/v1/tasks
Add LaCentrale listing URLs to check their status
Add LaCentrale listing URLs to your **LaCentrale Listing Status Checker** squid. Each task checks whether the listing is still active or has been deactivated or expired.
Crawler ID: `1d7fbb550feb1cf93e3e439039bcd687`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task must include a `url` field.
## Task Fields
LaCentrale listing URL. Example: `https://www.lacentrale.fr/auto-occasion-annonce-66103802227.html`
Only `auto-occasion-annonce` URLs are supported. The URL must match the pattern `lacentrale.fr/auto-occasion-annonce-{id}.html`.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{ "url": "https://www.lacentrale.fr/auto-occasion-annonce-66103802227.html" },
{ "url": "https://www.lacentrale.fr/auto-occasion-annonce-66104112345.html" }
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
listing_urls = [
"https://www.lacentrale.fr/auto-occasion-annonce-66103802227.html",
"https://www.lacentrale.fr/auto-occasion-annonce-66104112345.html",
]
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"squid": squid_id,
"tasks": [{"url": url} for url in listing_urls]
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates skipped: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"created_at": "2026-06-02T10:00:00.000000",
"is_active": true,
"params": {
"url": "https://www.lacentrale.fr/auto-occasion-annonce-66103802227.html"
},
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/lacentrale-listing-status-checker/credit-cost
Credit cost for the LaCentrale Listing Status Checker
1 credit per listing
# Get Results
Source: https://docs.lobstr.io/examples/lacentrale-listing-status-checker/get-results
GET https://api.lobstr.io/v1/results
Retrieve status check results from LaCentrale Listing Status Checker
Retrieve status check results from your **LaCentrale Listing Status Checker** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
LaCentrale listing URL that was checked. Example: `https://www.lacentrale.fr/auto-occasion-annonce-66103802227.html`
Listing status: `active` or `deactivated`. Example: `active`
HTTP status code returned by LaCentrale. `200` = active, `404`/`410` = deactivated or expired. Example: `200`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 81123,
"object": "result",
"squid": "2c7e9144973963a1e1bede62ac7e60ef",
"run": "f454b74115e20e4aca88312cd76d035c",
"url": "https://www.lacentrale.fr/auto-occasion-annonce-66103802227.html",
"status": "active",
"status_code": 200,
"functions": null,
"native_id": 81123
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/lacentrale-listing-status-checker/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the LaCentrale Listing Status Checker settings
Configure your **LaCentrale Listing Status Checker** squid settings. This scraper has no scraper-specific parameters beyond a global run limit.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the run |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Set a high concurrency value to check large batches of listing URLs quickly.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "LaCentrale Listing Status Checker (1)",
"concurrency": 5,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_unique_results_per_run": 1000
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "LaCentrale Listing Status Checker (1)",
"concurrency": 5,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_unique_results_per_run": 1000
}
}
)
print(f"Settings updated: {response.json()['name']}")
```
## Response
```json 201 theme={null}
{
"name": "LaCentrale Listing Status Checker (1)",
"concurrency": 5,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_unique_results_per_run": 1000
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/leboncoin-auto-message-sender/add-tasks
POST https://api.lobstr.io/v1/tasks
Add Leboncoin listing URLs to send automated messages
Add Leboncoin listing URLs to send automated messages to sellers. Each task represents a listing that will receive your templated message.
Unlike search export scrapers, this tool takes direct listing URLs rather than search result pages. You can obtain listing URLs from the Leboncoin Listings Search Export scraper results.
Crawler ID: `fa9c988768a3d61f358916400f3c4b65`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the Leboncoin Auto Message Sender crawler |
| **tasks** | array | Yes | Array of task objects, each containing a `url` field |
## Task Object
| Field | Type | Required | Description |
| - | - | - | - |
| **url** | string | Yes | Direct Leboncoin listing URL (e.g., `https://www.leboncoin.fr/ad/locations/2943434204`) |
Use the Leboncoin Listings Search Export scraper to collect listing URLs, then pass them to this tool for messaging.
Ensure you have configured your message template in the squid settings before adding tasks.
Messages are only sent to listings where the seller has messaging enabled.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tasks": [
{
"url": "https://www.leboncoin.fr/ad/locations/2943434204"
}
],
"squid": "YOUR_SQUID_HASH"
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Add Leboncoin listing URLs to send messages to
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"tasks": [
{"url": "https://www.leboncoin.fr/ad/locations/2943434204"}
],
"squid": squid_id
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "bbeff62182c6239a8df533ec9d281c2e",
"created_at": "2025-07-04T04:57:45.202264",
"is_active": true,
"params": {
"url": "https://www.leboncoin.fr/ad/locations/2943434204"
},
"module": 103,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/leboncoin-auto-message-sender/credit-cost
Credit cost for the Leboncoin Auto Message Sender
20 credits per message sent.
# Get Results
Source: https://docs.lobstr.io/examples/leboncoin-auto-message-sender/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Leboncoin Auto Message Sender
Retrieve scraped data from your **Leboncoin Auto Message Sender** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique internal identifier for the message record. Example: `1`
Unique identifier for the Leboncoin listing this message was sent to. Example: `3165893393`
Direct URL to the listing on Leboncoin. Example: `https://www.leboncoin.fr/ad/ventes_immobilieres/3165893393`
Text content of the message sent to the seller. Example: \`Hello toutong972,
Je viens de voir votre article qui porte le nom:
Terrain à vendre Plassac 970M2
L'offre m'intéresse?
Est-ce que vous pouvez me recontacter via la messagerie leboncoin?
A très vite,
Sasha\`
Internal hash used to uniquely identify this message
Whether the seller's Leboncoin account has been deactivated. Example: `false`
Whether the message was successfully sent. Example: `false`
Whether this message was already sent in a previous run. Example: `false`
Last publication date of the associated listing. Example: `2026-03-21T21:10:58+00:00`
Internal hash used to deduplicate messages across runs. Example: `1679091c5a880faf6fb5e6087eb1b2dc`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 1,
"object": "result",
"squid": "0edb27ee3753f6a9cc04fe723532f667",
"run": "b4c057e086be2a3bb9a11bff058d7728",
"annonce_id": "3165893393",
"url": "https://www.leboncoin.fr/ad/ventes_immobilieres/3165893393",
"message": "Hello toutong972,\n\nJe viens de voir votre article qui porte le nom:\nTerrain à vendre Plassac 970M2\n\nL'offre m'intéresse?\nEst-ce que vous pouvez me recontacter via la messagerie leboncoin?\n\nA très vite,\nSasha",
"message_hash": "",
"is_deactivated": false,
"is_sent": false,
"was_already_sent": false,
"last_publication_date": "2026-03-21T21:10:58+00:00",
"hash_value": "1679091c5a880faf6fb5e6087eb1b2dc",
"functions": null,
"native_id": 12856
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/leboncoin-auto-message-sender/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Leboncoin Auto Message Sender settings and message template
Configure your Leboncoin Auto Message Sender settings including the message template with dynamic variables that are replaced with listing-specific values.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Message Parameters
Configure the message content and targeting:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **message** | string | — | Template for the message sent to sellers. Supports dynamic variables (see below) |
| **fetch\_since** | string | null | Stop scraping when items older than this threshold are reached (based on `last_publication_date`). Use a relative duration (24h, 7d, 2w) or an absolute date (YYYY-MM-DD HH:MM:SS) |
| **fetch\_since\_timezone** | string | null | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Only applies when `fetch_since` is an absolute date — ignored for relative values like `24h` or `7d`. See [supported timezones](/docs/timezones). |
| **max\_results** | integer | null | Maximum number of listings to process before stopping |
| **max\_unique\_results\_per\_run** | integer | null | Maximum unique results across all tasks in a single run |
## Message Template Variables
The message parameter supports dynamic variables that are replaced with listing-specific values:
| Variable | Description |
| - | - |
| **#title#** | The listing title (e.g., "Appartement 3 pièces 88 m²") |
| **#pseudo#** | The seller's display name/pseudonym |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel message sending threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Example message template: "Hello #pseudo#,\n\nI am interested in your listing: #title#.\n\nPlease contact me via Leboncoin messaging.\n\nThank you!"
Keep concurrency low (1-2) to avoid rate limiting from Leboncoin.
The same message will not be sent twice to the same listing (duplicate detection via message\_hash).
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Leboncoin Auto Message Sender (4)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"message": "Hello #pseudo#,\n\nI want to enquire about #title#.",
"fetch_since": 1,
"max_results": 3,
"max_unique_results_per_run": 10
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Configure message template and settings
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Leboncoin Auto Message Sender (4)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
# Message template with dynamic variables
"message": "Hello #pseudo#,\n\nI want to enquire about #title#.",
"fetch_since": 1, # Only listings from last hour
"max_results": 3, # Process max 3 listings
"max_unique_results_per_run": 10 # Max 10 per run
}
}
)
print(response.json())
```
## Response
```json 201 theme={null}
{
"name": "Leboncoin Auto Message Sender (4)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"message": "Hello #pseudo#,\n\nI want to enquire about #title#.",
"max_unique_results_per_run": 20,
"fetch_since": 1,
"max_results": 3
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/leboncoin-boutique/add-tasks
POST https://api.lobstr.io/v1/tasks
Add Leboncoin boutique directory URLs to scrape
Add Leboncoin boutique directory URLs to your **Leboncoin Boutiques Scraper** squid. Each task should be a Leboncoin boutiques category URL.
Crawler ID: `c6e88128aef71c079e58f0518687e10c`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the Leboncoin Boutiques Scraper |
| **tasks** | array | Yes | Array of task objects, each containing a `url` field |
## Task Object
| Field | Type | Required | Description |
| - | - | - | - |
| **url** | string | Yes | A Leboncoin boutiques directory URL (e.g. `/boutiques/vehicules/toutes_categories` or `/boutiques/immobilier/toutes_categories`) |
Browse to a Leboncoin boutiques category page, then copy the path (e.g. `/boutiques/vehicules/toutes_categories`). You can also pass the full URL.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{
"url": "/boutiques/vehicules/toutes_categories"
}
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
payload = {
"squid": squid_id,
"tasks": [
{"url": "/boutiques/vehicules/toutes_categories"},
{"url": "/boutiques/immobilier/toutes_categories"}
]
}
response = requests.post(f"{BASE_URL}/tasks", headers=headers, json=payload)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates skipped: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"created_at": "2026-06-09T10:00:00.000000",
"is_active": true,
"params": {
"url": "/boutiques/vehicules/toutes_categories"
},
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/leboncoin-boutique/credit-cost
Credit cost for the Leboncoin Boutiques Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Boutique | 1 | 1 credit per boutique |
| Get Boutique Details | 2 | 2 credits per boutique |
| Get Phone Numbers | 6 | 6 credits per phone found. No phone found = 0 credits. |
# Get Results
Source: https://docs.lobstr.io/examples/leboncoin-boutique/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped store data from Leboncoin Boutiques Scraper
Retrieve scraped store data from your **Leboncoin Boutiques Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique store ID on Leboncoin.
Store display name. Example: `Auto Elite Paris`
URL of the store's Leboncoin page.
Phone number of the store. Populated when `get_phone_numbers` is enabled.
Whether the phone number is a French mobile number (starts with 06 or 07).
Whether a phone number is publicly available for the store.
Date the store was registered on Leboncoin. Example: `2018-03-15T00:00:00Z`
Street address of the store. Populated when `get_details` is enabled.
Postal code. Example: `75008`
City. Example: `Paris`
Department code. Example: `75`
Department name. Example: `Paris`
Region code. Example: `11`
Region name. Example: `Île-de-France`
GPS latitude of the store. Populated when `get_details` is enabled.
GPS longitude of the store. Populated when `get_details` is enabled.
SIREN number (9-digit French company identifier). Populated when `get_details` is enabled.
SIRET number (14-digit French establishment identifier). Populated when `get_details` is enabled.
Store slogan as shown on their Leboncoin page.
Store description. Populated when `get_details` is enabled.
Opening hours text. Populated when `get_details` is enabled.
Average Google rating. Example: `4.7`
Number of ratings. Example: `312`
URL of the store's logo image.
Business sector. Example: `vehicles`
Numeric sector ID.
Whether the store address is hidden on their public page.
Whether the contact form is hidden on their public page.
Owner UUID on Leboncoin.
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 81595,
"object": "result",
"squid": "54fc6a2a0fcad579aa37da48ab1085c2",
"run": "dab2c43091ea6e1677f9f6427ce9fb14",
"online_store_id": "2599946",
"online_store_name": "ACL RENAULT",
"url": "https://www.leboncoin.fr/boutique/2599946/acl_renault.htm",
"phone": "0561787878",
"is_mobile": false,
"has_phone": true,
"active_since": "2011-11-24T00:00:00",
"address": "3 Route d'Aussonne",
"zipcode": "31700",
"city": "Cornebarrieu",
"department": "31",
"department_label": "Haute-Garonne",
"region": "16",
"region_label": "Midi-Pyrénées",
"lat": 43.65559,
"lng": 1.32267,
"siren": "485064760",
"siret": "48506476000039",
"slogan": "Achat et vente de véhicules",
"description": "Tous nos véhicules sont disponibles sur notre parc.",
"opening_hours": "Du lundi au vendredi : 8h00 - 18h00",
"rating_value": 4.5,
"rating_count": 138,
"logo_url": "https://img.leboncoin.fr/api/v1/lbcpb1/images/4c/81/9f/4c819f72-8166-421e-9755-e801e785da5d?rule=bo-tiny",
"sector": "vehicles",
"sector_id": 1,
"hide_address": false,
"hide_contact_form": false,
"user_id": "d54740a9-215e-4c8a-a1cc-bd124f3b4c3f",
"functions": null,
"native_id": 81595
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/leboncoin-boutique/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Leboncoin Boutiques Scraper settings
Configure your **Leboncoin Boutiques Scraper** squid settings. Enable enrichment functions to collect additional store details, phone numbers, and business registration data.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **get\_details** | boolean | true | Fetch full store data: address, SIREN/SIRET, GPS coordinates, opening hours, description, and ratings (1 credit per store) |
| **get\_phone\_numbers** | boolean | true | Retrieve phone numbers for each store. No account required (1 credit per store) |
| **max\_results** | integer | unlimited | Maximum stores collected per URL |
| **max\_pages** | integer | 99 | Maximum number of pages to crawl per URL |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the run |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Enabling `get_details` or `get_phone_numbers` adds an extra request per store, increasing run time and credit usage.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Leboncoin Boutiques Scraper (1)",
"concurrency": 2,
"export_unique_results": true,
"to_complete": true,
"params": {
"get_details": true,
"get_phone_numbers": true,
"max_results": 500,
"max_pages": 10
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Leboncoin Boutiques Scraper (1)",
"concurrency": 2,
"export_unique_results": True,
"to_complete": True,
"params": {
"get_details": True,
"get_phone_numbers": True,
"max_results": 500,
"max_pages": 10
}
}
)
print(f"Settings updated: {response.json()['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Leboncoin Boutiques Scraper (1)",
"concurrency": 2,
"export_unique_results": true,
"to_complete": true,
"params": {
"get_details": true,
"get_phone_numbers": true,
"max_results": 500,
"max_pages": 10
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/leboncoin-iter-listings-with-phone/add-tasks
POST https://api.lobstr.io/v1/tasks
Add Leboncoin search URLs to scrape listings with phone numbers
Add Leboncoin search result pages to scrape by providing search URLs. This scraper extracts all classified listings including phone numbers when available.
This scraper is identical to Leboncoin Listings Search Export but adds phone number extraction capabilities.
Crawler ID: `7bc4acdb18f2b90fdd5eb42b8e8251e9`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the Leboncoin Listings & Phone Search Export crawler |
| **tasks** | array | Yes | Array of task objects, each containing a `url` field |
## Task Object
| Field | Type | Required | Description |
| - | - | - | - |
| **url** | string | Yes | Leboncoin search URL (e.g., `https://www.leboncoin.fr/annonces/offres/provence_alpes_cote_d_azur/`) |
Apply filters on Leboncoin first, then copy the URL. All filter parameters will be preserved.
Phone extraction requires enabling `functions.get_phone_numbers` in the settings and incurs extra credits.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tasks": [
{
"url": "https://www.leboncoin.fr/annonces/offres/provence_alpes_cote_d_azur/bouches_du_rhone/p-2"
}
],
"squid": "YOUR_SQUID_HASH"
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Add Leboncoin search URLs to scrape with phone extraction
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"tasks": [
{"url": "https://www.leboncoin.fr/annonces/offres/provence_alpes_cote_d_azur/bouches_du_rhone/p-2"}
],
"squid": squid_id
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "bbeff62182c6239a8df533ec9d281c2e",
"created_at": "2025-07-04T04:57:45.202264",
"is_active": true,
"params": {
"url": "https://www.leboncoin.fr/annonces/offres/provence_alpes_cote_d_azur/bouches_du_rhone/p-2"
},
"module": 103,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/leboncoin-iter-listings-with-phone/credit-cost
Credit cost for the Leboncoin Listings & Phone Search Export
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Listings (No Phone) | 4 | 4 credits per listing. |
| Get Phone Numbers | 6 | 6 credits per phone found. No phone found = 0 credits. |
| Get Seller Profile | 4 | 4 credits per profile |
# Get Results
Source: https://docs.lobstr.io/examples/leboncoin-iter-listings-with-phone/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Leboncoin Listings & Phone Search Export
Retrieve scraped data from your **Leboncoin Listings & Phone Search Export** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique identifier for the listing on Leboncoin. Example: `3066299454`
Title of the listing as posted on Leboncoin. Example: `Villa 5 pièces 105 m²`
Listed price of the item or property. Example: `1669`
Direct URL to the listing on Leboncoin. Example: `https://www.leboncoin.fr/ad/locations/3066299454`
Full description text of the listing. Example: \`Villa 5 pièces 105 m²
Dans bel environnement, A LOUER VELAUX, Villa meublée type 5 d'une surface habitable de 104,89 m² sur terrain de 1100 m².
RDC : pièce principale comprenant cuisine équipée américaine donnant sur salon/salle à manger avec cheminée, deux chambres/placards ,une salle de bains avec douche et baignoire, un WC.
1er étage : une chambre en mezzanine.
Terrasse - Garage/buanderie -
Climatisation réversible.
Disponible le 26/10/2025
Surface : 105 m²
Loyer : 1669 € / mois (charges comprises)
Montant des charges : 275 € / mois
Modalité de récupération des charges locatives : Prévisionnelles mensuelles avec régularisation annuelle
Honoraires à la charge du locataire : 1363.57 € dont 314.67 € pour l’état des lieux
Dépôt de garantie : 1394 €
Date de réalisation du diagnostic énergétique : 23/08/2023
Consommation énergie primaire : 105 kWh/m²/an
Consommation énergie finale : Non communiqué
Montant estimé des dépenses annuelles d'énergie pour un usage standard : entre 700 € et 1 000 € par an. Prix moyens des énergies indexés sur l'année Non communiqué (abonnements compris)
Les informations sur les risques auxquels ce bien est exposé sont disponibles sur le site Géorisques : [www.georisques.gouv.fr\`](http://www.georisques.gouv.fr`)
Email address of the seller (if available)
Comma or pipe-separated list of picture URLs for the listing. Example: `https://img.leboncoin.fr/api/v1/lbcpb1/images/84/bc/c2/84bcc22c34147d593b771914b7db7b9791c71c3c.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/5e/3a/b8/5e3ab867f9aa30a25468436e42dba41a2b370e7c.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/19/c8/9e/19c89ecf270b6226dcd53fa8143c7648f45c0490.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/af/1d/49/af1d49b6959bb680cc8f69ae247d0717a2cf4b6d.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/82/31/e7/8231e732a0de87ead42bbb9cd742684c70774b17.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/07/22/61/0722611838ca516a49bdc6a268d214ffb55a009c.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/47/93/9a/47939ab21ff66dd56d36ddc15a7d5893bcc85605.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/86/df/0f/86df0ffa2e1372b81592425010ffe72b3c2367ec.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/4d/21/49/4d2149a3b309d3111fd3173e21aae6f7970eb6ed.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/8a/e5/5b/8ae55b11c86f9239fe1aaa609d3f464fb0066911.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/a8/4b/43/a84b437d2131284c78070a4d134087cf6c549923.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/0d/1c/24/0d1c24d24de4bf966c175a5948f575e11c405b10.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/gh/80/1a/gh801aacb6ad35f5d8860634825fb792be5c1d97.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/d7/42/86/d742868f726238dd3daf190d8a936c1ece7056b9.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/3d/4b/b8/3d4bb89200c27f5c1219a0e79e7fb1103f68679a.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/f9/d4/f3/f9d4f36d5fd362518f6954b0e61738c3550113e8.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/91/f7/e7/91f7e7308223c788eea4531ba949541d61141e07.jpg?rule=ad-large`
Whether the listing is marked as urgent on Leboncoin. Example: `false`
URL of the listing's main picture. Example: `https://img.leboncoin.fr/api/v1/lbcpb1/images/84/bc/c2/84bcc22c34147d593b771914b7db7b9791c71c3c.jpg?rule=ad-large`
Category of the listing on Leboncoin (e.g. Immobilier, Voitures). Example: `Locations`
Currency of the listed price. Example: `EUR`
French region where the listing is located. Example: `Provence-Alpes-Côte d'Azur`
French department where the listing is located. Example: `Bouches-du-Rhône`
City where the listing is located. Example: `Velaux`
Formatted city name label as shown on Leboncoin. Example: `Velaux 13880`
French postal code of the listing location. Example: `13880`
Whether the listing has an exclusive promotion on Leboncoin
Whether the listing has a paid boost on Leboncoin. Example: `false`
Date the listing was first published on Leboncoin. Example: `2025-09-29T12:33:03+00:00`
Date the listing was last published or renewed on Leboncoin. Example: `2025-09-29T12:33:03+00:00`
Date the listing expires or is automatically removed
Whether a phone number is visible on the listing. Example: `true`
Current status of the listing on Leboncoin (e.g. active, expired)
Whether the listing is for a mobile home or caravan
Phone number extracted from the listing. Example: `0442747158`
Phone number retrieved from the seller's Leboncoin profile
Whether the seller has an online shop on Leboncoin. Example: `true`
URL to the seller's Leboncoin shop. Example: `https://www.leboncoin.fr/boutique/21494`
Type of seller (private individual or professional). Example: `1`
Name of the seller or business. Example: `A C D IMMOBILIER VILLAGE`
Unique identifier of the seller on Leboncoin. Example: `5e25f2ef-d2b7-4694-a321-e7a992df327e`
Custom reference number assigned by the seller
Internal API key used by the scraper. Example: `54bb0281238b45a03f0ee695f73e704f`
Greenhouse gas emissions (GES) label as displayed on Leboncoin (e.g. A, B, C). Example: `A`
Greenhouse gas emissions (GES) rating object. Example: `a`
Energy Performance Diagnostic (DPE) label as displayed on Leboncoin (e.g. A, B, C). Example: `B`
Energy Performance Diagnostic (DPE) rating object. Example: `b`
Total number of rooms in the property. Example: `5`
Number of bedrooms in the property
Whether service charges (charges) are included in the listed price. Example: `true`
Living surface area of the property in square metres. Example: `105`
Floor level of the property
Calculated price per square metre
Whether the property is furnished. Example: `true`
Type of real estate (e.g. apartment, house, land). Example: `Maison`
Additional listing attributes returned by the Leboncoin API (JSON). Example: `{"GES": "A", "Extérieur": "Terrasse, Jardin", "Honoraires": "1364", "Référence": "1059", "Type de bien": "Maison", "Ce bien est :": "Meublé", "État du bien": "Bon état", "Frais d'agence": "19.73 %", "Classe énergie": "B", "Charges incluses": "Oui", "Caractéristiques": "Cuisine équipée", "Charges locatives": "275 €", "Mode de chauffage": "Autre", "Nombre de pièces": "5", "Surface habitable": "105 m²", "Type de chauffage": "Individuel", "Nombre de chambres": "3 ch.", "Dépôt de garantie": "1394 €", "Prix hors honoraires": "1394 €", "Étage de votre bien": "0", "Montant des honoraires": "275 €", "Frais d'état des lieux": "315 €", "Nombre de salles de bain": "1", "Surface totale du terrain": "1100 m²", "Loyer mensuel (hors charges)": "1394", "Bien soumis à l'encadrement des loyers": "Non"}`
Extended listing details returned by the Leboncoin API (JSON). Example: `{"ges": "A", "rooms": "5", "square": "105 m²", "bedrooms": "3 ch.", "furnished": "Meublé", "is_import": "true", "custom_ref": "1059", "fees_price": "275 €", "lease_type": "rent", "district_id": "13112", "energy_rate": "B", "rental_fees": "1364", "floor_number": "0", "heating_mode": "Autre", "heating_type": "Individuel", "mandate_type": "simple", "nb_bathrooms": "1", "specificities": "Cuisine équipée", "external_ad_id": "ac3_8875_19616623", "inventory_fees": "315 €", "outside_access": "Terrasse, Jardin", "pro_rates_link": "https://media.immo-facile.com/segments/immo/catalog/images/manufacturers_bareme/39735.pdf", "activity_sector": "2", "monthly_charges": "275 €", "charges_included": "Oui", "district_type_id": "2", "global_condition": "Bon état", "real_estate_type": "Maison", "security_deposit": "1394 €", "land_plot_surface": "1100 m²", "price_except_fees": "1394 €", "district_visibility": "false", "is_public_rent_control": "Non", "rent_excluding_charges": "1394", "district_resolution_type": "integration", "negotiating_fees_percentage": "19.73 %"}`
Additional enrichment functions enabled for this record. Example: `{"phone": {"filling_date": "09/30/2025, 14:21:24 +0200"}}`
Latitude coordinate of the listing location. Example: `43.5237`
Longitude coordinate of the listing location. Example: `5.2578`
Type of advertisement on Leboncoin (offer or request). Example: `offer`
Whether the listing is from a private seller only (no professionals). Example: `false`
Internal hash used to identify this listing version. Example: `e3d8cc836e81c6a2488f8871f8d4502f`
## Seller Profile Fields
Enriched seller profile data:
Date the seller's Leboncoin account was created (YYYY-MM-DD). Example: `2019-03-15`
Percentage of messages answered by the seller (0–100). Example: `87`
Typical reply time as a human-readable string. Example: `10 minutes`
Current online presence status of the seller. Values: `ONLINE`, `OFFLINE`
Timestamp of the seller's last activity on Leboncoin. Example: `2025-07-04T03:45:00Z`
JSON array of badge names awarded to the seller (e.g. `Responsiveness`, `RecommendedSeller`, `VerifiedPhoneNumber`)
Total number of active listings the seller currently has on Leboncoin. Example: `12`
JSON object with seller feedback scores per category: COMMUNICATION, PACKAGE, PRODUCT, RECOMMENDATION, USER\_ATTENTION
URL of the seller's Leboncoin profile picture (medium resolution). Example: `https://static.leboncoin.fr/img/user/...`
Bio or description text written by the seller on their Leboncoin profile
## Vehicle Fields
Vehicle-specific fields (cars, motorbikes, utilities):
Vehicle mileage in km. Example: `45000`
Vehicle model year. Example: `2021`
Fuel type. Example: `Essence`
Gearbox type. Example: `Automatique`
Crit'Air environmental sticker rating for the vehicle. Example: `1`
Vehicle first registration date. Example: `06/2021`
Item condition (consumer goods). Example: `Très bon état`
Vehicle brand/make. Example: `Renault`
Vehicle model name. Example: `Clio`
Vehicle color. Example: `Blanc`
Number of doors (cars). Example: `5`
Number of seats. Example: `5`
DIN horsepower. Example: `90`
Fiscal horsepower (CV). Example: `6`
Engine displacement in cc (motorbikes). Example: `650`
Motorcycle type. Example: `Roadster`
Motorcycle licence category. Example: `A`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 94856,
"object": "result",
"squid": "bb9c28c8c7700ca7138d26690c451595",
"run": "57a01c9669db5f0d7900703b3876ecf1",
"annonce_id": "3066299454",
"title": "Villa 5 pièces 105 m²",
"price": 1669,
"url": "https://www.leboncoin.fr/ad/locations/3066299454",
"description": "Villa 5 pièces 105 m²\n\nDans bel environnement, A LOUER VELAUX, Villa meublée type 5 d'une surface habitable de 104,89 m² sur terrain de 1100 m².\nRDC : pièce principale comprenant cuisine équipée américaine donnant sur salon/salle à manger avec cheminée, deux chambres/placards ,une salle de bains avec douche et baignoire, un WC.\n1er étage : une chambre en mezzanine.\nTerrasse - Garage/buanderie - \nClimatisation réversible.\n\nDisponible le 26/10/2025\n\nSurface : 105 m²\nLoyer : 1669 € / mois (charges comprises)\nMontant des charges : 275 € / mois\nModalité de récupération des charges locatives : Prévisionnelles mensuelles avec régularisation annuelle\nHonoraires à la charge du locataire : 1363.57 € dont 314.67 € pour l'état des lieux\nDépôt de garantie : 1394 €\nDate de réalisation du diagnostic énergétique : 23/08/2023\n\nConsommation énergie primaire : 105 kWh/m²/an\nConsommation énergie finale : Non communiqué\n\nMontant estimé des dépenses annuelles d'énergie pour un usage standard : entre 700 € et 1 000 € par an. Prix moyens des énergies indexés sur l'année Non communiqué (abonnements compris)\n\nLes informations sur les risques auxquels ce bien est exposé sont disponibles sur le site Géorisques : www.georisques.gouv.fr",
"mail": null,
"pictures": "https://img.leboncoin.fr/api/v1/lbcpb1/images/84/bc/c2/84bcc22c34147d593b771914b7db7b9791c71c3c.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/5e/3a/b8/5e3ab867f9aa30a25468436e42dba41a2b370e7c.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/19/c8/9e/19c89ecf270b6226dcd53fa8143c7648f45c0490.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/af/1d/49/af1d49b6959bb680cc8f69ae247d0717a2cf4b6d.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/82/31/e7/8231e732a0de87ead42bbb9cd742684c70774b17.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/07/22/61/0722611838ca516a49bdc6a268d214ffb55a009c.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/47/93/9a/47939ab21ff66dd56d36ddc15a7d5893bcc85605.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/86/df/0f/86df0ffa2e1372b81592425010ffe72b3c2367ec.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/4d/21/49/4d2149a3b309d3111fd3173e21aae6f7970eb6ed.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/8a/e5/5b/8ae55b11c86f9239fe1aaa609d3f464fb0066911.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/a8/4b/43/a84b437d2131284c78070a4d134087cf6c549923.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/0d/1c/24/0d1c24d24de4bf966c175a5948f575e11c405b10.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/gh/80/1a/gh801aacb6ad35f5d8860634825fb792be5c1d97.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/d7/42/86/d742868f726238dd3daf190d8a936c1ece7056b9.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/3d/4b/b8/3d4bb89200c27f5c1219a0e79e7fb1103f68679a.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/f9/d4/f3/f9d4f36d5fd362518f6954b0e61738c3550113e8.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/91/f7/e7/91f7e7308223c788eea4531ba949541d61141e07.jpg?rule=ad-large",
"urgent": false,
"picture": "https://img.leboncoin.fr/api/v1/lbcpb1/images/84/bc/c2/84bcc22c34147d593b771914b7db7b9791c71c3c.jpg?rule=ad-large",
"category_name": "Locations",
"currency": "EUR",
"region": "Provence-Alpes-Côte d'Azur",
"department": "Bouches-du-Rhône",
"city": "Velaux",
"city_label": "Velaux 13880",
"postal_code": "13880",
"is_exclusive": null,
"is_boosted": false,
"first_publication_date": "2025-09-29T12:33:03+00:00",
"last_publication_date": "2025-09-29T12:33:03+00:00",
"expiration_date": null,
"has_phone": true,
"status": null,
"is_mobile": null,
"phone": "0442747158",
"phone_from_user": null,
"has_online_shop": true,
"online_shop_url": "https://www.leboncoin.fr/boutique/21494",
"owner_type": "1",
"owner_name": "A C D IMMOBILIER VILLAGE",
"user_id": "5e25f2ef-d2b7-4694-a321-e7a992df327e",
"custom_ref": null,
"api_key": "54bb0281238b45a03f0ee695f73e704f",
"GES_string": "A",
"GES": "a",
"DPE_string": "B",
"DPE": "b",
"room_count": 5,
"sleepingroom_count": null,
"charges_included": true,
"area": 105,
"floor": null,
"price_per_square_meter": null,
"furnished": true,
"real_estate_type": "Maison",
"details": "{\"GES\": \"A\", \"Extérieur\": \"Terrasse, Jardin\", \"Honoraires\": \"1364\", \"Référence\": \"1059\", \"Type de bien\": \"Maison\", \"Ce bien est :\": \"Meublé\", \"État du bien\": \"Bon état\", \"Frais d'agence\": \"19.73 %\", \"Classe énergie\": \"B\", \"Charges incluses\": \"Oui\", \"Caractéristiques\": \"Cuisine équipée\", \"Charges locatives\": \"275 €\", \"Mode de chauffage\": \"Autre\", \"Nombre de pièces\": \"5\", \"Surface habitable\": \"105 m²\", \"Type de chauffage\": \"Individuel\", \"Nombre de chambres\": \"3 ch.\", \"Dépôt de garantie\": \"1394 €\", \"Prix hors honoraires\": \"1394 €\", \"Étage de votre bien\": \"0\", \"Montant des honoraires\": \"275 €\", \"Frais d'état des lieux\": \"315 €\", \"Nombre de salles de bain\": \"1\", \"Surface totale du terrain\": \"1100 m²\", \"Loyer mensuel (hors charges)\": \"1394\", \"Bien soumis à l'encadrement des loyers\": \"Non\"}",
"more_details": "{\"ges\": \"A\", \"rooms\": \"5\", \"square\": \"105 m²\", \"bedrooms\": \"3 ch.\", \"furnished\": \"Meublé\", \"is_import\": \"true\", \"custom_ref\": \"1059\", \"fees_price\": \"275 €\", \"lease_type\": \"rent\", \"district_id\": \"13112\", \"energy_rate\": \"B\", \"rental_fees\": \"1364\", \"floor_number\": \"0\", \"heating_mode\": \"Autre\", \"heating_type\": \"Individuel\", \"mandate_type\": \"simple\", \"nb_bathrooms\": \"1\", \"specificities\": \"Cuisine équipée\", \"external_ad_id\": \"ac3_8875_19616623\", \"inventory_fees\": \"315 €\", \"outside_access\": \"Terrasse, Jardin\", \"pro_rates_link\": \"https://media.immo-facile.com/segments/immo/catalog/images/manufacturers_bareme/39735.pdf\", \"activity_sector\": \"2\", \"monthly_charges\": \"275 €\", \"charges_included\": \"Oui\", \"district_type_id\": \"2\", \"global_condition\": \"Bon état\", \"real_estate_type\": \"Maison\", \"security_deposit\": \"1394 €\", \"land_plot_surface\": \"1100 m²\", \"price_except_fees\": \"1394 €\", \"district_visibility\": \"false\", \"is_public_rent_control\": \"Non\", \"rent_excluding_charges\": \"1394\", \"district_resolution_type\": \"integration\", \"negotiating_fees_percentage\": \"19.73 %\"}",
"functions": null,
"lat": "43.5237",
"lng": "5.2578",
"ad_type": "offer",
"no_salesmen": false,
"hash_value": null,
"seller_registered_at": "2021-02-02",
"seller_reply_rate": 100,
"seller_reply_time_text": "10 minutes",
"seller_presence_status": "OFFLINE",
"seller_presence_last_activity": "2026-06-10T15:53:13+00:00",
"seller_badges": "[\"Responsiveness3\", \"VerifiedPhoneNumber\"]",
"seller_total_ads": 12,
"seller_feedback_scores": "{\"COMMUNICATION\": 1, \"PACKAGE\": 1, \"PRODUCT\": 1, \"RECOMMENDATION\": 1, \"USER_ATTENTION\": 1}",
"seller_profile_picture_url": "https://img.leboncoin.fr/api/v1/tenants/.../images/profile/pictures/default/f7c839c3.jpg?rule=pp-medium",
"seller_description": null,
"mileage": null,
"regdate": null,
"fuel": null,
"gearbox": null,
"critair": null,
"issuance_date": null,
"condition": null,
"brand": null,
"model": null,
"vehicule_color": null,
"doors": null,
"seats": null,
"horse_power_din": null,
"horse_power": null,
"cubic_capacity": null,
"cycle_type": null,
"cycle_licence": null,
"native_id": 94856
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/leboncoin-iter-listings-with-phone/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure scraper settings for Leboncoin Listings & Phone Search Export
Configure your squid settings for the Leboncoin Listings & Phone Search Export scraper. This scraper extends the standard Leboncoin scraper with phone number extraction capabilities.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Phone Extraction Parameter
Enable phone number extraction:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **functions.get\_phone\_numbers** | boolean | true | Extract phone numbers from listings (6 credits per listing) |
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **fetch\_since** | string | null | Stop scraping when items older than this threshold are reached (based on `last_publication_date`). Use a relative duration (24h, 7d, 2w) or an absolute date (YYYY-MM-DD HH:MM:SS) |
| **fetch\_since\_timezone** | string | null | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Only applies when `fetch_since` is an absolute date — ignored for relative values like `24h` or `7d`. See [supported timezones](/docs/timezones). |
| **max\_pages** | integer | null | Maximum number of result pages to crawl |
| **max\_results** | integer | null | Total number of listings to collect before stopping |
| **max\_unique\_results\_per\_run** | integer | null | Maximum unique results across all tasks in a single run |
| **online\_shop** | boolean | false | Extract seller's shop URL (incurs extra requests/credits) |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping workers (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Enabling `functions.get_phone_numbers` adds extra requests per listing, significantly increasing run time and credit usage.
Only enable phone extraction when phone numbers are actually required for your use case.
Phone numbers are only available when the seller has enabled phone contact on their listing.
**Backward compatibility:** The old function name `phone` is still accepted but deprecated. Migrate to `get_phone_numbers`.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Leboncoin Listings & Phone Search Export (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"functions": {
"get_phone_numbers": true
},
"max_pages": 99,
"fetch_since": null,
"max_results": null,
"online_shop": true
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Update scraper settings with phone extraction enabled
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Leboncoin Listings & Phone Search Export (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"functions": {
"get_phone_numbers": True # Enable phone number extraction
},
"max_pages": 99,
"fetch_since": None,
"max_results": None,
"online_shop": True
}
}
)
print(response.json())
```
## Response
```json 201 theme={null}
{
"name": "Leboncoin Listings & Phone Search Export (1)",
"no_line_breaks": true,
"params": {
"functions": {
"get_phone_numbers": true
},
"max_pages": 99,
"fetch_since": null,
"max_results": null,
"online_shop": true
},
"to_complete": false,
"export_unique_results": true
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/leboncoin-listing-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Leboncoin Listing Scraper squid
Add URLs or inputs to your **Leboncoin Listing Scraper** squid. Each task object must include the required fields below.
Crawler ID: `9eade2d2a693bd871851806650e7fb4e`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task supports the fields below.
## Task Fields
# Credit Cost
Source: https://docs.lobstr.io/examples/leboncoin-listing-scraper/credit-cost
Credit cost for the Leboncoin Listing Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Listing (No Phone) | 4 | 4 credits per listing. |
| Get Phone Number | 6 | 6 credits per phone found. No phone found = 0 credits. |
# Get Results
Source: https://docs.lobstr.io/examples/leboncoin-listing-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Leboncoin Listing Scraper
Retrieve scraped data from your **Leboncoin Listing Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique identifier for the listing on Leboncoin. Example: `3062366535`
Title of the listing. Example: `Lot de 7 plats en inox de différentes tailles`
Listed price of the item. Example: `18`
Direct URL to the listing on Leboncoin. Example: `https://www.leboncoin.fr/ad/arts_de_la_table/3062366535`
Full description text of the listing. Example: `7 plats en inox,4 peuvent aller sur l'induction a feu doux,,
Détails 3 légumiers ronds,22,23,28 cm diamètre.
1 plat rond 30 cm , 2 plats ovales34/23 cm, 1 grand ovale 41/28. Livraison uniquement par mondial Relay ou enlever sur Caen Vaucelle.
Poids total 4 kg.`
Whether a phone number is available for this listing. Example: `false`
Phone number of the seller
Type of seller (private individual or professional). Example: `private`
Name of the seller. Example: `gonne`
Unique identifier of the seller on Leboncoin. Example: `89fb67be-e718-4bf4-b217-a809002f48c7`
Store identifier for professional sellers. Example: `4616769`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 44561,
"object": "result",
"squid": "ae2db44eb64ea4fcea841f9337c2e670",
"run": "98bb0ca6f9b831e7199d11e3d1208562",
"annonce_id": "3062366535",
"title": "Lot de 7 plats en inox de différentes tailles",
"price": 18,
"url": "https://www.leboncoin.fr/ad/arts_de_la_table/3062366535",
"description": "7 plats en inox,4 peuvent aller sur l'induction a feu doux,,\nDétails 3 légumiers ronds,22,23,28 cm diamètre.\n1 plat rond 30 cm , 2 plats ovales34/23 cm, 1 grand ovale 41/28. Livraison uniquement par mondial Relay ou enlever sur Caen Vaucelle.\nPoids total 4 kg.",
"has_phone": false,
"phone": null,
"owner_type": "private",
"owner_name": "gonne",
"owner_id": "89fb67be-e718-4bf4-b217-a809002f48c7",
"store_id": "4616769",
"functions": null,
"native_id": 44561
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/leboncoin-listing-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Leboncoin Listing Scraper settings
Configure your Leboncoin Listing Scraper squid settings. Enable phone number extraction to retrieve the seller's phone number from each listing page.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Optional Functions
Enable these in the `params.functions` object:
| Function | Type | Default | Description |
| - | - | - | - |
| **get\_phone\_numbers** | boolean | true | Fetch the seller's phone number from the listing page (6 credits per listing) |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Phone number extraction is enabled by default. Disable it if you only need listing data to avoid extra credit charges.
Phone numbers are only available when the seller has enabled phone contact on their listing.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Leboncoin Listing Scraper (1)",
"concurrency": 5,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"functions": {
"get_phone_numbers": true
}
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Leboncoin Listing Scraper (1)",
"concurrency": 5,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"functions": {
"get_phone_numbers": True # 6 credits per listing
}
}
}
)
print(f"Settings updated: {response.json()['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Leboncoin Listing Scraper (1)",
"concurrency": 5,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"functions": {
"get_phone_numbers": true
}
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/leboncoin-listing-status-checker/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Leboncoin Listing Status Checker squid
Add URLs or inputs to your **Leboncoin Listing Status Checker** squid. Each task object must include the required fields below.
Crawler ID: `0c60c33b95db65c86d5c9fc127b7b2aa`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task supports the fields below.
## Task Fields
# Credit Cost
Source: https://docs.lobstr.io/examples/leboncoin-listing-status-checker/credit-cost
Credit cost for the Leboncoin Listing Status Checker
1 credit per listing.
# Get Results
Source: https://docs.lobstr.io/examples/leboncoin-listing-status-checker/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Leboncoin Listing Status Checker
Retrieve scraped data from your **Leboncoin Listing Status Checker** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Leboncoin listing URL that was checked. Example: `https://www.leboncoin.fr/ad/voitures/3172676206`
Listing status: active or deactivated. Example: `active`
HTTP status code returned by Leboncoin. Example: `200`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 34245,
"object": "result",
"squid": "75db5660a5f61ec94803af91f45097b0",
"run": "a0766aca18784d68c2067f409e6e733e",
"url": "https://www.leboncoin.fr/ad/voitures/3172676206",
"status": "active",
"status_code": 200,
"functions": null,
"native_id": 34245
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/leboncoin-listing-status-checker/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Leboncoin Listing Status Checker settings
Configure your Leboncoin Listing Status Checker squid settings. This scraper checks whether Leboncoin listings are still active and has no scraper-specific parameters beyond global run limits.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the run |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Set a high concurrency value to check large batches of listing URLs quickly.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Leboncoin Listing Status Checker (1)",
"concurrency": 5,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_unique_results_per_run": 1000
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Leboncoin Listing Status Checker (1)",
"concurrency": 5,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_unique_results_per_run": 1000
}
}
)
print(f"Settings updated: {response.json()['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Leboncoin Listing Status Checker (1)",
"concurrency": 5,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_unique_results_per_run": 1000
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/leboncoin-listings-search-export/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Leboncoin Listings Search Export squid
Add URLs or inputs to your **Leboncoin Listings Search Export** squid. Each task object must include the required fields below.
Crawler ID: `33db1ca85160105eeb84d5aa51cfad10`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task supports the fields below.
## Task Fields
# Credit Cost
Source: https://docs.lobstr.io/examples/leboncoin-listings-search-export/credit-cost
Credit cost for the Leboncoin Listings Search Export
4 credits per listing.
# Get Results
Source: https://docs.lobstr.io/examples/leboncoin-listings-search-export/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Leboncoin Listings Search Export
Retrieve scraped data from your **Leboncoin Listings Search Export** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique identifier for the listing on Leboncoin. Example: `3066299454`
Title of the listing as posted on Leboncoin. Example: `Villa 5 pièces 105 m²`
Listed price of the item or property. Example: `1669`
Direct URL to the listing on Leboncoin. Example: `https://www.leboncoin.fr/ad/locations/3066299454`
Full description text of the listing. Example: \`Villa 5 pièces 105 m²
Dans bel environnement, A LOUER VELAUX, Villa meublée type 5 d'une surface habitable de 104,89 m² sur terrain de 1100 m².
RDC : pièce principale comprenant cuisine équipée américaine donnant sur salon/salle à manger avec cheminée, deux chambres/placards ,une salle de bains avec douche et baignoire, un WC.
1er étage : une chambre en mezzanine.
Terrasse - Garage/buanderie -
Climatisation réversible.
Disponible le 26/10/2025
Surface : 105 m²
Loyer : 1669 € / mois (charges comprises)
Montant des charges : 275 € / mois
Modalité de récupération des charges locatives : Prévisionnelles mensuelles avec régularisation annuelle
Honoraires à la charge du locataire : 1363.57 € dont 314.67 € pour l’état des lieux
Dépôt de garantie : 1394 €
Date de réalisation du diagnostic énergétique : 23/08/2023
Consommation énergie primaire : 105 kWh/m²/an
Consommation énergie finale : Non communiqué
Montant estimé des dépenses annuelles d'énergie pour un usage standard : entre 700 € et 1 000 € par an. Prix moyens des énergies indexés sur l'année Non communiqué (abonnements compris)
Les informations sur les risques auxquels ce bien est exposé sont disponibles sur le site Géorisques : [www.georisques.gouv.fr\`](http://www.georisques.gouv.fr`)
Email address of the seller (if available)
Comma or pipe-separated list of picture URLs for the listing. Example: `https://img.leboncoin.fr/api/v1/lbcpb1/images/84/bc/c2/84bcc22c34147d593b771914b7db7b9791c71c3c.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/5e/3a/b8/5e3ab867f9aa30a25468436e42dba41a2b370e7c.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/19/c8/9e/19c89ecf270b6226dcd53fa8143c7648f45c0490.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/af/1d/49/af1d49b6959bb680cc8f69ae247d0717a2cf4b6d.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/82/31/e7/8231e732a0de87ead42bbb9cd742684c70774b17.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/07/22/61/0722611838ca516a49bdc6a268d214ffb55a009c.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/47/93/9a/47939ab21ff66dd56d36ddc15a7d5893bcc85605.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/86/df/0f/86df0ffa2e1372b81592425010ffe72b3c2367ec.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/4d/21/49/4d2149a3b309d3111fd3173e21aae6f7970eb6ed.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/8a/e5/5b/8ae55b11c86f9239fe1aaa609d3f464fb0066911.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/a8/4b/43/a84b437d2131284c78070a4d134087cf6c549923.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/0d/1c/24/0d1c24d24de4bf966c175a5948f575e11c405b10.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/gh/80/1a/gh801aacb6ad35f5d8860634825fb792be5c1d97.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/d7/42/86/d742868f726238dd3daf190d8a936c1ece7056b9.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/3d/4b/b8/3d4bb89200c27f5c1219a0e79e7fb1103f68679a.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/f9/d4/f3/f9d4f36d5fd362518f6954b0e61738c3550113e8.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/91/f7/e7/91f7e7308223c788eea4531ba949541d61141e07.jpg?rule=ad-large`
Whether the listing is marked as urgent on Leboncoin. Example: `false`
URL of the listing's main picture. Example: `https://img.leboncoin.fr/api/v1/lbcpb1/images/84/bc/c2/84bcc22c34147d593b771914b7db7b9791c71c3c.jpg?rule=ad-large`
Category of the listing on Leboncoin (e.g. Immobilier, Voitures). Example: `Locations`
Currency of the listed price. Example: `EUR`
French region where the listing is located. Example: `Provence-Alpes-Côte d'Azur`
French department where the listing is located. Example: `Bouches-du-Rhône`
City where the listing is located. Example: `Velaux`
Formatted city name label as shown on Leboncoin. Example: `Velaux 13880`
French postal code of the listing location. Example: `13880`
Whether the listing has an exclusive promotion on Leboncoin
Date the listing was first published on Leboncoin. Example: `2025-09-29T12:33:03+00:00`
Date the listing was last published or renewed on Leboncoin. Example: `2025-09-29T12:33:03+00:00`
Date the listing expires or is automatically removed
Current status of the listing on Leboncoin (e.g. active, expired)
Type of seller (private individual or professional). Example: `1`
Name of the seller or business. Example: `A C D IMMOBILIER VILLAGE`
Unique identifier of the seller on Leboncoin. Example: `5e25f2ef-d2b7-4694-a321-e7a992df327e`
Custom reference number assigned by the seller
Internal API key used by the scraper. Example: `54bb0281238b45a03f0ee695f73e704f`
Greenhouse gas emissions (GES) label as displayed on Leboncoin (e.g. A, B, C). Example: `A`
Greenhouse gas emissions (GES) rating object. Example: `a`
Energy Performance Diagnostic (DPE) label as displayed on Leboncoin (e.g. A, B, C). Example: `B`
Energy Performance Diagnostic (DPE) rating object. Example: `b`
Total number of rooms in the property. Example: `5`
Number of bedrooms in the property
Whether service charges (charges) are included in the listed price. Example: `true`
Living surface area of the property in square metres. Example: `105`
Floor level of the property
Calculated price per square metre
Whether the property is furnished. Example: `true`
Type of real estate (e.g. apartment, house, land). Example: `Maison`
Additional listing attributes returned by the Leboncoin API (JSON). Example: `{"GES": "A", "Extérieur": "Terrasse, Jardin", "Honoraires": "1364", "Référence": "1059", "Type de bien": "Maison", "Ce bien est :": "Meublé", "État du bien": "Bon état", "Frais d'agence": "19.73 %", "Classe énergie": "B", "Charges incluses": "Oui", "Caractéristiques": "Cuisine équipée", "Charges locatives": "275 €", "Mode de chauffage": "Autre", "Nombre de pièces": "5", "Surface habitable": "105 m²", "Type de chauffage": "Individuel", "Nombre de chambres": "3 ch.", "Dépôt de garantie": "1394 €", "Prix hors honoraires": "1394 €", "Étage de votre bien": "0", "Montant des honoraires": "275 €", "Frais d'état des lieux": "315 €", "Nombre de salles de bain": "1", "Surface totale du terrain": "1100 m²", "Loyer mensuel (hors charges)": "1394", "Bien soumis à l'encadrement des loyers": "Non"}`
Extended listing details returned by the Leboncoin API (JSON). Example: `{"ges": "A", "rooms": "5", "square": "105 m²", "bedrooms": "3 ch.", "furnished": "Meublé", "is_import": "true", "custom_ref": "1059", "fees_price": "275 €", "lease_type": "rent", "district_id": "13112", "energy_rate": "B", "rental_fees": "1364", "floor_number": "0", "heating_mode": "Autre", "heating_type": "Individuel", "mandate_type": "simple", "nb_bathrooms": "1", "specificities": "Cuisine équipée", "external_ad_id": "ac3_8875_19616623", "inventory_fees": "315 €", "outside_access": "Terrasse, Jardin", "pro_rates_link": "https://media.immo-facile.com/segments/immo/catalog/images/manufacturers_bareme/39735.pdf", "activity_sector": "2", "monthly_charges": "275 €", "charges_included": "Oui", "district_type_id": "2", "global_condition": "Bon état", "real_estate_type": "Maison", "security_deposit": "1394 €", "land_plot_surface": "1100 m²", "price_except_fees": "1394 €", "district_visibility": "false", "is_public_rent_control": "Non", "rent_excluding_charges": "1394", "district_resolution_type": "integration", "negotiating_fees_percentage": "19.73 %"}`
Additional enrichment functions enabled for this record. Example: `{"phone": {"filling_date": "09/30/2025, 14:21:24 +0200"}}`
Latitude coordinate of the listing location. Example: `43.5237`
Longitude coordinate of the listing location. Example: `5.2578`
Type of advertisement on Leboncoin (offer or request). Example: `offer`
Whether the listing is from a private seller only (no professionals). Example: `false`
Internal hash used to identify this listing version. Example: `e3d8cc836e81c6a2488f8871f8d4502f`
Whether the seller has an online shop on Leboncoin. Example: `true`
URL to the seller's Leboncoin shop. Example: `https://www.leboncoin.fr/boutique/21494`
Capacity of the space (e.g. number of guests for accommodation listings)
Whether the property has a swimming pool
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 82586,
"object": "result",
"squid": "58dea8cc2f00ff30027b1fc99d76ce90",
"run": "1e974d9125907a6e1681da818bff4e01",
"annonce_id": "3066299454",
"title": "Villa 5 pièces 105 m²",
"price": 1669,
"url": "https://www.leboncoin.fr/ad/locations/3066299454",
"description": "Villa 5 pièces 105 m²\n\nDans bel environnement, A LOUER VELAUX, Villa meublée type 5 d'une surface habitable de 104,89 m² sur terrain de 1100 m².\nRDC : pièce principale comprenant cuisine équipée américaine donnant sur salon/salle à manger avec cheminée, deux chambres/placards ,une salle de bains avec douche et baignoire, un WC.\n1er étage : une chambre en mezzanine.\nTerrasse - Garage/buanderie - \nClimatisation réversible.\n\nDisponible le 26/10/2025\n\nSurface : 105 m²\nLoyer : 1669 € / mois (charges comprises)\nMontant des charges : 275 € / mois\nModalité de récupération des charges locatives : Prévisionnelles mensuelles avec régularisation annuelle\nHonoraires à la charge du locataire : 1363.57 € dont 314.67 € pour l'état des lieux\nDépôt de garantie : 1394 €\nDate de réalisation du diagnostic énergétique : 23/08/2023\n\nConsommation énergie primaire : 105 kWh/m²/an\nConsommation énergie finale : Non communiqué\n\nMontant estimé des dépenses annuelles d'énergie pour un usage standard : entre 700 € et 1 000 € par an. Prix moyens des énergies indexés sur l'année Non communiqué (abonnements compris)\n\nLes informations sur les risques auxquels ce bien est exposé sont disponibles sur le site Géorisques : www.georisques.gouv.fr",
"mail": null,
"pictures": "https://img.leboncoin.fr/api/v1/lbcpb1/images/84/bc/c2/84bcc22c34147d593b771914b7db7b9791c71c3c.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/5e/3a/b8/5e3ab867f9aa30a25468436e42dba41a2b370e7c.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/19/c8/9e/19c89ecf270b6226dcd53fa8143c7648f45c0490.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/af/1d/49/af1d49b6959bb680cc8f69ae247d0717a2cf4b6d.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/82/31/e7/8231e732a0de87ead42bbb9cd742684c70774b17.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/07/22/61/0722611838ca516a49bdc6a268d214ffb55a009c.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/47/93/9a/47939ab21ff66dd56d36ddc15a7d5893bcc85605.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/86/df/0f/86df0ffa2e1372b81592425010ffe72b3c2367ec.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/4d/21/49/4d2149a3b309d3111fd3173e21aae6f7970eb6ed.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/8a/e5/5b/8ae55b11c86f9239fe1aaa609d3f464fb0066911.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/a8/4b/43/a84b437d2131284c78070a4d134087cf6c549923.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/0d/1c/24/0d1c24d24de4bf966c175a5948f575e11c405b10.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/gh/80/1a/gh801aacb6ad35f5d8860634825fb792be5c1d97.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/d7/42/86/d742868f726238dd3daf190d8a936c1ece7056b9.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/3d/4b/b8/3d4bb89200c27f5c1219a0e79e7fb1103f68679a.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/f9/d4/f3/f9d4f36d5fd362518f6954b0e61738c3550113e8.jpg?rule=ad-large, https://img.leboncoin.fr/api/v1/lbcpb1/images/91/f7/e7/91f7e7308223c788eea4531ba949541d61141e07.jpg?rule=ad-large",
"urgent": false,
"picture": "https://img.leboncoin.fr/api/v1/lbcpb1/images/84/bc/c2/84bcc22c34147d593b771914b7db7b9791c71c3c.jpg?rule=ad-large",
"category_name": "Locations",
"currency": "EUR",
"region": "Provence-Alpes-Côte d'Azur",
"department": "Bouches-du-Rhône",
"city": "Velaux",
"city_label": "Velaux 13880",
"postal_code": "13880",
"is_exclusive": null,
"first_publication_date": "2025-09-29T12:33:03+00:00",
"last_publication_date": "2025-09-29T12:33:03+00:00",
"expiration_date": null,
"status": null,
"owner_type": "1",
"owner_name": "A C D IMMOBILIER VILLAGE",
"user_id": "5e25f2ef-d2b7-4694-a321-e7a992df327e",
"custom_ref": null,
"api_key": "54bb0281238b45a03f0ee695f73e704f",
"GES_string": "A",
"GES": "a",
"DPE_string": "B",
"DPE": "b",
"room_count": 5,
"sleepingroom_count": null,
"charges_included": true,
"area": 105,
"floor": null,
"price_per_square_meter": null,
"furnished": true,
"real_estate_type": "Maison",
"details": "{\"GES\": \"A\", \"Extérieur\": \"Terrasse, Jardin\", \"Honoraires\": \"1364\", \"Référence\": \"1059\", \"Type de bien\": \"Maison\", \"Ce bien est :\": \"Meublé\", \"État du bien\": \"Bon état\", \"Frais d'agence\": \"19.73 %\", \"Classe énergie\": \"B\", \"Charges incluses\": \"Oui\", \"Caractéristiques\": \"Cuisine équipée\", \"Charges locatives\": \"275 €\", \"Mode de chauffage\": \"Autre\", \"Nombre de pièces\": \"5\", \"Surface habitable\": \"105 m²\", \"Type de chauffage\": \"Individuel\", \"Nombre de chambres\": \"3 ch.\", \"Dépôt de garantie\": \"1394 €\", \"Prix hors honoraires\": \"1394 €\", \"Étage de votre bien\": \"0\", \"Montant des honoraires\": \"275 €\", \"Frais d'état des lieux\": \"315 €\", \"Nombre de salles de bain\": \"1\", \"Surface totale du terrain\": \"1100 m²\", \"Loyer mensuel (hors charges)\": \"1394\", \"Bien soumis à l'encadrement des loyers\": \"Non\"}",
"more_details": "{\"ges\": \"A\", \"rooms\": \"5\", \"square\": \"105 m²\", \"bedrooms\": \"3 ch.\", \"furnished\": \"Meublé\", \"is_import\": \"true\", \"custom_ref\": \"1059\", \"fees_price\": \"275 €\", \"lease_type\": \"rent\", \"district_id\": \"13112\", \"energy_rate\": \"B\", \"rental_fees\": \"1364\", \"floor_number\": \"0\", \"heating_mode\": \"Autre\", \"heating_type\": \"Individuel\", \"mandate_type\": \"simple\", \"nb_bathrooms\": \"1\", \"specificities\": \"Cuisine équipée\", \"external_ad_id\": \"ac3_8875_19616623\", \"inventory_fees\": \"315 €\", \"outside_access\": \"Terrasse, Jardin\", \"pro_rates_link\": \"https://media.immo-facile.com/segments/immo/catalog/images/manufacturers_bareme/39735.pdf\", \"activity_sector\": \"2\", \"monthly_charges\": \"275 €\", \"charges_included\": \"Oui\", \"district_type_id\": \"2\", \"global_condition\": \"Bon état\", \"real_estate_type\": \"Maison\", \"security_deposit\": \"1394 €\", \"land_plot_surface\": \"1100 m²\", \"price_except_fees\": \"1394 €\", \"district_visibility\": \"false\", \"is_public_rent_control\": \"Non\", \"rent_excluding_charges\": \"1394\", \"district_resolution_type\": \"integration\", \"negotiating_fees_percentage\": \"19.73 %\"}",
"functions": null,
"lat": "43.5237",
"lng": "5.2578",
"ad_type": "offer",
"no_salesmen": false,
"hash_value": null,
"has_online_shop": true,
"online_shop_url": "https://www.leboncoin.fr/boutique/21494",
"capacity": null,
"has_swimming_pool": null,
"native_id": 82586
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/leboncoin-listings-search-export/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Leboncoin Listings Search Export scraper settings
Configure your Leboncoin Listings Search Export squid settings. Control pagination, result limits, time filters, and whether to include seller shop URLs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_pages** | integer | 99 | Maximum number of search result pages to crawl (max: 99) |
| **max\_results** | integer | unlimited | Maximum number of listings to collect per task |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the run |
| **online\_shop** | boolean | false | Extract the seller's shop URL (incurs extra requests per listing) |
| **fetch\_since** | string | null | Stop scraping when items older than this threshold are reached (based on `last_publication_date`). Use a relative duration (24h, 7d, 2w) or an absolute date (YYYY-MM-DD HH:MM:SS) |
| **fetch\_since\_timezone** | string | null | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Only applies when `fetch_since` is an absolute date — ignored for relative values like `24h` or `7d`. See [supported timezones](/docs/timezones). |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Use `fetch_since: 1h` to monitor new listings in near real-time.
Combine with `export_unique_results: true` to avoid duplicates when a listing appears across multiple pages.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Leboncoin Listings Search Export (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_pages": 99,
"fetch_since": "24h",
"online_shop": false
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Leboncoin Listings Search Export (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_pages": 99,
"fetch_since": "24h",
"online_shop": False
}
}
)
data = response.json()
print(f"Settings updated: {data['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Leboncoin Listings Search Export (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_pages": 99,
"fetch_since": "24h",
"online_shop": false
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/leboncoin-messages-reader/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Leboncoin Messages Reader squid
Add Leboncoin messaging URLs to your **Leboncoin Messages Reader** squid.
Crawler ID: `dd8d063c6af13ff80ea5da2d03976f31`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
The Leboncoin messaging URL to read. Use `https://www.leboncoin.fr/messages` to read the whole inbox of the connected account, or `https://www.leboncoin.fr/messages/id/{conversation_id}` to read one conversation only.
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.leboncoin.fr/messages"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.leboncoin.fr/messages"}
],
},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.leboncoin.fr/messages"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/leboncoin-messages-reader/credit-cost
Credit cost for the Leboncoin Messages Reader
1 credit per message row. The Leboncoin Messages Reader is a Premium-only scraper.
# Get Results
Source: https://docs.lobstr.io/examples/leboncoin-messages-reader/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Leboncoin Messages Reader
Retrieve scraped data from your **Leboncoin Messages Reader** runs. One row per message, with the conversation, the listing and the other party on every row.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`.
## Query Parameters
Hash of the squid to get results from.
Page number (default: 1).
## Result Fields
Unique identifier of the message on Leboncoin.
Full text of the message, line breaks preserved.
Message kind as returned by Leboncoin: `ApiTextMessage` for a regular message, `ApiTemplateMessage` for a templated one.
Identifier of the Leboncoin message template when the message was sent from a template, empty otherwise.
Date and time (UTC) the message was sent.
`received` when the message was written by the other party, `sent` when it was written by the connected Leboncoin account.
True when the message was sent by the connected Leboncoin account.
True when the message has been read by the connected Leboncoin account.
True when the other party has read the message (read receipt on messages you sent).
Number of files attached to the message.
Raw attachment objects attached to the message, as returned by Leboncoin.
Leboncoin user id of the message sender.
Display name of the message sender.
Unique identifier of the conversation the message belongs to.
Direct URL of the conversation in the Leboncoin messaging inbox.
Identifier of the Leboncoin listing the conversation is about. Same identifier as the `annonce_id` of the Leboncoin Auto Message Sender, so replies can be joined back to the messages sent.
Title of the listing the conversation is about.
Current status of the listing: `active` or `deleted`.
Leboncoin category id of the listing (e.g. `9` = Ventes immobilières).
Thumbnail image of the listing.
Leboncoin user id of the listing owner.
Type of the listing owner, `private` for a private seller. Empty when Leboncoin does not return it.
Leboncoin user id of the other party in the conversation.
Display name of the other party in the conversation.
Date and time (UTC) of the most recent message of the conversation at collection time.
Preview of the most recent message of the conversation at collection time.
Number of files attached to the most recent message of the conversation.
Number of unread messages in the conversation at collection time.
True when the conversation had at least one unread message at collection time.
## Code Examples
```bash cURL theme={null}
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=YOUR_SQUID_HASH" \
-d "page=1"
```
```python Python theme={null}
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "YOUR_SQUID_HASH", "page": 1},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"message_id": "b07ce020-6be6-11f1-8080-808080808080", "message_text": "Hello Sasha, toutes les infos utiles sont dans l'annonce !\nMichel.", "message_type": "ApiTextMessage", "message_sent_at": "2026-06-19T13:56:37.282000+00:00", "direction": "received", "is_outgoing": false, "is_read": true, "conversation_id": "c2d7efff-5f3e-4898-8d49-979f94260003", "conversation_url": "https://www.leboncoin.fr/messages/id/c2d7efff-5f3e-4898-8d49-979f94260003", "annonce_id": "3196445542", "ad_title": "Maison individuelle de plein-pied proche Louhans", "counterparty_name": "deschamps"}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/leboncoin-messages-reader/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Leboncoin Messages Reader settings
Configure your **Leboncoin Messages Reader** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| received\_only | boolean | false | Collect only the messages written by the other party. When false, the messages sent by the connected account are collected too, as the context of the reply. |
| unread\_only | boolean | false | Collect only the conversations that have at least one unread message at run time. Reading messages with this crawler never marks them as read. |
| fetch\_since | string | — | Only collect messages sent after this threshold (based on `message_sent_at`). Use a relative duration (`24h`, `7d`, `2w`) or an absolute date (`YYYY-MM-DD HH:MM:SS`). Conversations whose last message is older than the threshold are skipped entirely. |
| fetch\_since\_timezone | string | — | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Ignored for relative values. |
| max\_results | integer | — | Maximum number of messages to collect per task. Leave empty to collect every message found. |
| max\_unique\_results\_per\_run | integer | — | Maximum number of unique results retrieved across all tasks in the entire run. Leave empty for unlimited. |
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"received_only": true,
"unread_only": false,
"fetch_since": "7d"
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"received_only": True,
"unread_only": False,
"fetch_since": "7d",
},
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"received_only": true, "unread_only": false, "fetch_since": "7d"}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/linkedin-company-employees-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your LinkedIn Company Employees Scraper squid
Add URLs or inputs to your **LinkedIn Company Employees Scraper** squid.
Crawler ID: `08ac061ab290b5ae0f831e086c98d4b5`
This scraper requires a synced LinkedIn account. Connect your LinkedIn account in the lobstr.io account settings before use.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
LinkedIn company URL or company slug. Example: `https://www.linkedin.com/company/google`
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "08ac061ab290b5ae0f831e086c98d4b5",
"tasks": [
{"url": "https://www.linkedin.com/company/google"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "08ac061ab290b5ae0f831e086c98d4b5",
"tasks": [
{"url": "https://www.linkedin.com/company/google"}
],
},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.linkedin.com/company/google"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/linkedin-company-employees-scraper/credit-cost
Credit cost for the LinkedIn Company Employees Scraper
1 credit per employee.
# Get Results
Source: https://docs.lobstr.io/examples/linkedin-company-employees-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from LinkedIn Company Employees Scraper
Retrieve scraped data from your **LinkedIn Company Employees Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Page number (default: 1)
## Result Fields
LinkedIn internal profile id, stable across name/URL changes. Example: `ACoAAABcDefGHIjklMNOpQRSTUVwXyz`
Full name of the employee as displayed by LinkedIn. Example: `Alice Johnson`
Public profile slug used in the profile URL. Example: `alice-johnson-12345`
Direct URL to the employee's LinkedIn profile. Example: `https://www.linkedin.com/in/alice-johnson-12345`
Profile headline. Example: `Senior Software Engineer at Google`
Location as displayed by LinkedIn. Example: `San Francisco Bay Area`
URL of the employee profile picture. Example: `https://media.licdn.com/dms/image/v2/Cabcde/profile-displayphoto-shrink_200_200/0/1234567890?e=1234567890&v=beta&t=abc`
Connection degree between the connected account and this employee (1st, 2nd, 3rd+). Example: `2nd`
Whether LinkedIn displays the verified member badge. Example: `false`
Whether LinkedIn displays the premium member badge. Example: `false`
LinkedIn member URN (numeric member id). Example: `urn:li:member:123456789`
Name of the company the employee was matched on. Example: `Google`
URL of the company LinkedIn page. Example: `https://www.linkedin.com/company/google`
Slug of the company LinkedIn page. Example: `google`
Numeric LinkedIn id of the company. Example: `1441`
## Code Examples
```bash cURL theme={null}
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=08ac061ab290b5ae0f831e086c98d4b5" \
-d "page=1"
```
```python Python theme={null}
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "08ac061ab290b5ae0f831e086c98d4b5", "page": 1},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"full_name": "Alice Johnson", "headline": "Senior Software Engineer at Google", "location_text": "San Francisco Bay Area", "profile_url": "https://www.linkedin.com/in/alice-johnson-12345", "connection_degree": "2nd", "company_name": "Google"}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/linkedin-company-employees-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure LinkedIn Company Employees Scraper settings
Configure your **LinkedIn Company Employees Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| keyword | string | — | Free-text filter applied to the employee search, e.g. 'engineer' or 'sales' |
| max\_results | integer | 1000 | Maximum number of employees to scrape per company |
| max\_unique\_results\_per\_run | integer | — | Max unique results across all tasks in the run |
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/08ac061ab290b5ae0f831e086c98d4b5 \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"keyword": "engineer",
"max_results": 1000
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/08ac061ab290b5ae0f831e086c98d4b5",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"keyword": "engineer",
"max_results": 1000,
},
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"keyword": "engineer", "max_results": 1000}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/linkedin-company/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your LinkedIn Company Scraper squid
Add URLs or inputs to your **LinkedIn Company Scraper** squid.
Crawler ID: `a6fab652671e54f962ce9ebe48d5ffed`
No LinkedIn account required — this scraper works without cookies or login.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
LinkedIn company URL or company slug. Example: `https://www.linkedin.com/company/google`
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"squid": "YOUR_SQUID_HASH", "tasks": [{"url": "https://www.linkedin.com/company/google"}]}'
```
```python Python theme={null}
import requests
headers = {"Authorization": "Token YOUR_API_KEY", "Content-Type": "application/json"}
response = requests.post("https://api.lobstr.io/v1/tasks", headers=headers,
json={"squid": "YOUR_SQUID_HASH", "tasks": [{"url": "https://www.linkedin.com/company/google"}]})
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.linkedin.com/company/google"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/linkedin-company/credit-cost
Credit cost for the LinkedIn Company Scraper
1 credit per company page.
# Get Results
Source: https://docs.lobstr.io/examples/linkedin-company/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from LinkedIn Company Scraper
Retrieve scraped data from your **LinkedIn Company Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Page number (default: 1)
## Result Fields
LinkedIn vanity slug for the company. Example: `google`
Company name. Example: `Google`
Canonical LinkedIn URL. Example: `https://www.linkedin.com/company/google`
LinkedIn internal numeric identifier. Example: `1441`
Short tagline.
Full 'About us' description.
Company website. Example: `https://about.google`
LinkedIn industry. Example: `Technology, Information and Internet`
Employee count range declared by the company. Example: `10,001+ employees`
Exact number of LinkedIn members listing this company. Example: `306912`
Number of LinkedIn followers. Example: `23481902`
Year founded. Example: `1998`
Headquarters as displayed. Example: `Mountain View, CA`
Street address.
City. Example: `Mountain View`
State or region. Example: `CA`
Postal code. Example: `94043`
Country code. Example: `US`
Every office location listed.
Specialties declared by the company.
Type of company. Example: `Public Company`
URL of the company logo.
URL of the cover image.
Affiliated company pages.
Showcase pages of the company.
Pages LinkedIn shows as similar.
Products showcased.
Company phone number (only visible to logged-in members).
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"universal_name": "google", "name": "Google", "url": "https://www.linkedin.com/company/google", "industry": "Technology, Information and Internet", "employees_count": 306912, "followers_count": 23481902, "founded_year": 1998, "hq_country": "US"}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/linkedin-company/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure LinkedIn Company Scraper settings
Configure your **LinkedIn Company Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| **url** | string | — | LinkedIn company URL, showcase page URL, or company slug |
| **max\_results** | integer | — | Caps rows collected per task |
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"params": {"max_results": 100}}'
```
```python Python theme={null}
import requests
requests.post("https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH",
headers={"Authorization": "Token YOUR_API_KEY", "Content-Type": "application/json"},
json={"params": {"max_results": 100}})
```
## Response
```json 201 theme={null}
{"params": {"max_results": 100}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/linkedin-jobs-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your LinkedIn Jobs Scraper squid
Add URLs or inputs to your **LinkedIn Jobs Scraper** squid.
Crawler ID: `b5a5fc71ba325dc507bc302e02327d9b`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
A LinkedIn jobs search URL, or a link to a single job posting. **How to get one:** open a private browsing window, go to [https://www.linkedin.com/jobs](https://www.linkedin.com/jobs), type your job title and location, apply any filters you want, then copy the URL from the address bar. The filters below still apply on top of the URL for anything the URL itself does not already set. Example: `https://www.linkedin.com/jobs/search?keywords=Software%20Engineer&location=United%20States&f_TPR=r604800`
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.linkedin.com/jobs/search?keywords=Software%20Engineer&location=United%20States&f_TPR=r604800"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.linkedin.com/jobs/search?keywords=Software%20Engineer&location=United%20States&f_TPR=r604800"}
],
},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.linkedin.com/jobs/search?keywords=Software%20Engineer&location=United%20States&f_TPR=r604800"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/linkedin-jobs-scraper/credit-cost
Credit cost for the LinkedIn Jobs Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Jobs | 1 | 1 credit per job posting (title, company, location, posted date, apply link, snippet). |
| Full Job Details | 1 | 1 extra credit per job when `job_details` is enabled. Off by default. Free when the task input is a single job URL, since that posting page is already scraped in full. |
| Company Details | 1 | 1 extra credit per job when `company_details` is enabled. Off by default. |
# Get Results
Source: https://docs.lobstr.io/examples/linkedin-jobs-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from LinkedIn Jobs Scraper
Retrieve scraped data from your **LinkedIn Jobs Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`.
## Query Parameters
Hash of the squid to get results from.
Page number (default: 1).
## Result Fields
### Export Jobs
Unique LinkedIn job posting identifier. Example: `4448124252`
Direct URL to the job posting on LinkedIn. Example: `https://www.linkedin.com/jobs/view/4448124252`
Job position title. Example: `Software Engineer`
Name of the hiring company. Example: `Cohere`
LinkedIn page URL of the hiring company. Example: `https://www.linkedin.com/company/cohere-ai`
URL of the hiring company's logo image. Example: `https://media.licdn.com/dms/image/v2/C560BAQGI_GYoDekJsQ/company-logo_100_100/0/1680024442682`
Job location as displayed on the posting. Example: `Paris, Île-de-France, France`
Date the job was posted (daily granularity). Example: `2026-08-03 00:00:00`
Human-readable posting age as displayed on LinkedIn. Example: `1 week ago`
Salary information as displayed on the posting, when available. Example: `$110,000.00/yr - $130,000.00/yr`
Badges displayed on the job card (e.g. Actively Hiring, Be an early applicant). Example: `Actively Hiring`
### Full Job Details
Full job description as plain text. Example: `Who are we? Cohere is the leading security-first enterprise AI company...`
Full job description with HTML formatting preserved. Example: `Who are we?
Cohere is the leading security-first enterprise AI company...
`
Required seniority level as listed on the posting. Example: `Mid-Senior level`
Employment type (e.g. Full-time, Contract, Internship). Example: `Full-time`
Main job function / department. Example: `Engineering and Information Technology`
Industries of the hiring company for this job. Example: `Software Development`
Number of applicants so far (LinkedIn shows exact counts below 200, then 'Over 200'). Example: `25`
How applications are handled: `easy_apply` (on LinkedIn) or `external` (company site). Example: `external`
URL where candidates actually apply (external application URL when the job redirects off LinkedIn). Example: `https://jobs.lever.co/cohere/12345`
Lower bound of the salary range, parsed as a number. Example: `110000.0`
Upper bound of the salary range, parsed as a number. Example: `130000.0`
Currency of the salary range. Example: `USD`
Period the salary range refers to (yearly, monthly, weekly, hourly). Example: `yearly`
Name of the recruiter or person who posted the job, when publicly shown. Example: `Andrea Cowan`
LinkedIn headline of the job poster, when publicly shown. Example: `Technical Recruiter at Meta`
LinkedIn profile URL of the job poster, when publicly shown. Example: `https://www.linkedin.com/in/andrea-cowan-458b5423b`
Profile photo URL of the job poster, when publicly shown. Example: `https://media.licdn.com/dms/image/C5603AQErv53vemaq_A/profile-displayphoto-shrink_100_100/0/1657753132661`
LinkedIn internal identifier of the hiring company. Example: `24024765`
### Company Details
External website of the hiring company. Example: `https://cohere.com`
About section of the hiring company's LinkedIn page. Example: `Cohere is the leading security-first enterprise AI company...`
Industry of the hiring company as listed on its LinkedIn page. Example: `Software Development`
Company size bracket as listed on its LinkedIn page. Example: `201-500 employees`
Number of employees on LinkedIn. Example: `1019`
Number of LinkedIn followers of the hiring company. Example: `253257`
Year the hiring company was founded. Example: `2019`
Headquarters location of the hiring company. Example: `Toronto, Ontario`
Specialties listed on the hiring company's LinkedIn page. Example: `Natural Language Processing, Machine Learning, Artificial Intelligence`
Tagline of the hiring company's LinkedIn page. Example: `The leading security-first enterprise AI company`
Organization type of the hiring company (e.g. Privately Held, Public Company). Example: `Privately Held`
## Code Examples
```bash cURL theme={null}
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=YOUR_SQUID_HASH" \
-d "page=1"
```
```python Python theme={null}
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "YOUR_SQUID_HASH", "page": 1},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"job_id": "4448124252", "url": "https://www.linkedin.com/jobs/view/4448124252", "title": "Software Engineer", "company_name": "Cohere", "company_url": "https://www.linkedin.com/company/cohere-ai", "company_logo": "https://media.licdn.com/dms/image/v2/C560BAQGI_GYoDekJsQ/company-logo_100_100/0/1680024442682", "location": "Paris, \u00cele-de-France, France", "posted_at": "2026-08-03 00:00:00", "posted_time_ago": "1 week ago", "salary": "$110,000.00/yr - $130,000.00/yr"}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/linkedin-jobs-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure LinkedIn Jobs Scraper settings
Configure your **LinkedIn Jobs Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| date\_posted | string | `Any time` | Only return jobs posted within this time window. Applied on top of your URL, unless the URL already carries a date filter. One of: `Any time`, `Past month`, `Past week`, `Past 24 hours`. |
| job\_type | string | `Any` | Filter by employment type. Applied on top of your URL. NB: LinkedIn's new AI search treats this as search intent (like typing it in the search box), so close matches may occasionally appear. One of: `Any`, `Full-time`, `Part-time`, `Contract`, `Temporary`, `Internship`, `Volunteer`, `Other`. |
| experience\_level | string | `Any` | Filter by required experience level. Applied on top of your URL. NB: LinkedIn's new AI search treats this as search intent (like typing it in the search box), so close matches may occasionally appear. One of: `Any`, `Internship`, `Entry level`, `Associate`, `Mid-Senior level`, `Director`, `Executive`. |
| workplace\_type | string | `Any` | Filter by workplace arrangement. Applied on top of your URL. NB: LinkedIn's new AI search treats this as search intent (like typing it in the search box), so close matches may occasionally appear. One of: `Any`, `On-site`, `Remote`, `Hybrid`. |
| easy\_apply | boolean | false | Only return jobs that can be applied to directly on LinkedIn. Applied on top of your URL, unless the URL already carries this filter. |
| under\_10\_applicants | boolean | false | Only return jobs with fewer than 10 applicants. Applied on top of your URL, unless the URL already carries this filter. |
| distance | string | `Any distance` | Maximum search radius around the location in the URL. Applied unless the URL already carries a distance. One of: `Any distance`, `5 miles`, `10 miles`, `25 miles`, `50 miles`, `100 miles`. |
| sort\_by | string | `Relevance` | How results are ordered. `Most recent` sorts by listing time. Applied unless the URL already carries a sort. One of: `Relevance`, `Most recent`. |
| exclude\_job\_titles | string | — | Comma-separated words. Jobs whose title contains any of them are skipped before collection, so they never consume credits (e.g. `senior, manager, director`). |
| exclude\_companies | string | — | Comma-separated company names. Jobs posted by these companies are skipped before collection, so they never consume credits (e.g. `Randstad, Adecco`). |
| max\_results | int | `1000` | Max number of jobs to scrape per search. NB: LinkedIn displays up to 1,000 jobs per search URL, no more. To collect more, split your search by location or keyword. |
| max\_unique\_results\_per\_run | int | — | Maximum number of unique results retrieved across all tasks in the entire run. Leave empty for unlimited. |
| fetch\_since | fetch\_since | — | Only collect jobs posted after this threshold (based on `posted_at`) — applied directly in the LinkedIn search, so filtered-out jobs cost nothing. Use a relative duration (24h, 7d, 2w) or an absolute date (YYYY-MM-DD HH:MM:SS). NB: LinkedIn exposes posting dates with daily granularity. |
| fetch\_since\_timezone | string | — | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Ignored for relative values. |
| job\_details | boolean | false | Paid add-on. Visit each job posting page to collect the full description, structured salary, seniority, industries, recruiter and apply link. When off, you get the fields shown in the search results only. Free when the task input is a single job URL, since that posting page is already scraped in full. Costs 1 extra credit per job. |
| company\_details | boolean | false | Paid add-on. Visit each hiring company's LinkedIn page to collect website, industry, headcount, followers, founding year, headquarters and specialties. Costs 1 extra credit per job. |
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"date_posted": "Past week",
"job_type": "Full-time",
"experience_level": "Mid-Senior level",
"workplace_type": "Remote",
"max_results": 500,
"job_details": true
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"date_posted": "Past week",
"job_type": "Full-time",
"experience_level": "Mid-Senior level",
"workplace_type": "Remote",
"max_results": 500,
"job_details": True,
},
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"date_posted": "Past week", "job_type": "Full-time", "experience_level": "Mid-Senior level", "workplace_type": "Remote", "max_results": 500, "job_details": true}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/linkedin-leads-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your LinkedIn Leads Scraper squid
Add URLs or inputs to your **LinkedIn Leads Scraper** squid. Each task object must include the required fields below.
Crawler ID: `aa164b3c44d4f435fe5e04ddf6757296`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task supports the fields below.
## Task Fields
# Credit Cost
Source: https://docs.lobstr.io/examples/linkedin-leads-scraper/credit-cost
Credit cost for the LinkedIn Leads Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Leads | 1 | 1 credit per lead |
| Get Profile Details | 1 | 1 credit per profile |
| Email Enrichment | 9 | 9 credits per profile enriched. No email = 0 credits. |
# Get Results
Source: https://docs.lobstr.io/examples/linkedin-leads-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from LinkedIn Leads Scraper
Retrieve scraped data from your **LinkedIn Leads Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Direct URL to the LinkedIn profile. Example: `https://www.linkedin.com/in/williamhgates`
LinkedIn public profile slug used in the profile URL. Example: `williamhgates`
First name of the LinkedIn member. Example: `Bill`
Last name of the LinkedIn member. Example: `Gates`
Full name of the LinkedIn member. Example: `Bill Gates`
Email address found or enriched for this LinkedIn member. Example: `bill@microsoft.com`
Validation status of the email address (e.g. valid, risky, invalid). Example: `valid`
LinkedIn headline / job title of the member. Example: `Co-chair, Bill & Melinda Gates Foundation`
LinkedIn profile summary / about section. Example: `Sharing things I'm learning through my foundation work and other interests.`
Geographic location of the LinkedIn member. Example: `Seattle, Washington, United States`
Industry of the LinkedIn member. Example: `Philanthropic Fundraising Services`
LinkedIn internal member ID (numeric vmid). Example: `251749025`
Sales Navigator URL for the LinkedIn member. Example: `https://www.linkedin.com/sales/people/251749025`
Connection degree between the scraping account and this member (1, 2, 3, Out of Network). Example: `2`
URL to see the connections of this LinkedIn member. Example: `https://www.linkedin.com/search/results/people/?facetConnectionOf=%5B%22251749025%22%5D`
URL to see mutual connections with this LinkedIn member. Example: `https://www.linkedin.com/search/results/people/?facetNetwork=%5B%22F%22%5D&facetConnectionOf=%5B%22251749025%22%5D`
Human-readable text describing mutual connections. Example: `3 mutual connections`
Profile picture URL of the LinkedIn member. Example: `https://media.licdn.com/dms/image/v2/example.jpg`
Background/banner picture URL of the LinkedIn member. Example: `https://media.licdn.com/dms/image/v2/example-bg.jpg`
Whether the member has Creator mode enabled. Example: `true`
Whether the member has the Open To Work frame on their profile picture. Example: `false`
Number of connections the member has. Example: `500`
Number of followers the member has. Example: `35000000`
List of skills listed on the member's profile. Example: `['Software Development', 'Philanthropy']`
Certifications listed on the member's profile. Example: `[{"name": "AWS Solutions Architect", "authority": "Amazon Web Services"}]`
Languages listed on the member's profile. Example: `[{"name": "English", "proficiency": "NATIVE_OR_BILINGUAL"}]`
Honors and awards listed on the member's profile.
Projects listed on the member's profile.
Publications listed on the member's profile.
Patents listed on the member's profile.
Organizations listed on the member's profile.
Courses listed on the member's profile.
Whether the member has LinkedIn's verified badge. Example: `false`
Whether the member is actively hiring (shows a hiring frame on their profile picture). Example: `false`
Most recent job position (structured object). Example: `{}`
Job title of the most recent position. Example: `Co-chair`
Company name of the most recent position. Example: `Bill & Melinda Gates Foundation`
LinkedIn company URL for the most recent position. Example: `https://www.linkedin.com/company/bill-melinda-gates-foundation/`
Company logo URL for the most recent position. Example: `https://media.licdn.com/dms/image/v2/example-logo.jpg`
Location of the most recent position. Example: `Seattle, WA`
Description of the most recent position. Example: `Leading philanthropic initiatives...`
Start year of the most recent position. Example: `2000`
Start month of the most recent position. Example: `1`
End year of the most recent position (null if current)
End month of the most recent position (null if current)
2nd most recent job position (structured object). Example: `{}`
Job title of the 2nd position
Company name of the 2nd position
Company URL of the 2nd position
Company logo URL of the 2nd position
Location of the 2nd position
Description of the 2nd position
Start year of the 2nd position
Start month of the 2nd position
End year of the 2nd position
End month of the 2nd position
3rd most recent job position (structured object). Example: `{}`
Job title of the 3rd position
Company name of the 3rd position
Company URL of the 3rd position
Company logo URL of the 3rd position
Location of the 3rd position
Description of the 3rd position
Start year of the 3rd position
Start month of the 3rd position
End year of the 3rd position
End month of the 3rd position
Most recent education entry (school name, field of study, dates). Example: `{}`
2nd education entry. Example: `{}`
3rd education entry. Example: `{}`
List of companies the member follows on LinkedIn. Example: `[]`
List of LinkedIn groups the member has joined. Example: `[]`
First featured post or article on the member's profile. Example: `{}`
Second featured post or article. Example: `{}`
Third featured post or article. Example: `{}`
Full list of all job positions (raw array). Example: `[]`
Full list of all education entries (raw array). Example: `[]`
### Company Enrichment Fields
The following fields require `enrich_company: true` in settings.
LinkedIn numeric identifier of the lead's current company.
LinkedIn vanity slug of the lead's current company. Example: `microsoft`
Name of the lead's current company as listed on LinkedIn. Example: `Microsoft`
Company website URL as listed on LinkedIn. Example: `https://www.microsoft.com`
Apex domain of the company's website. Example: `microsoft.com`
LinkedIn industry of the company. Example: `Software Development`
Employee count range declared by the company. Example: `10,001+ employees`
Exact number of LinkedIn members listing this company. Example: `228000`
Number of LinkedIn followers of the company. Example: `18000000`
Headquarters location as displayed on the company page. Example: `Redmond, Washington, United States`
City of the company headquarters. Example: `Redmond`
Country code of the company headquarters. Example: `US`
Full 'About us' description of the company.
Short tagline displayed under the company name. Example: `Empowering every person and organization on the planet to achieve more.`
List of specialties declared by the company. Example: `["Business Software", "Developer Tools", "Cloud Computing"]`
URL of the company logo image. Example: `https://media.licdn.com/dms/image/v2/microsoft-logo.jpg`
Whether LinkedIn displays the verified badge on the company page. Example: `true`
Additional enrichment functions enabled for this record. Example: `[]`
Timestamp when this record was scraped. Example: `2026-04-01T10:00:00Z`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 55625,
"object": "result",
"squid": "be678e3927864c2d61154e02da6170fb",
"run": "a84a32dd363a98569fb73eb6084c8c33",
"url": "https://www.linkedin.com/in/williamhgates",
"public_identifier": "williamhgates",
"first_name": "Bill",
"last_name": "Gates",
"full_name": "Bill Gates",
"email": "bill@microsoft.com",
"email_status": "valid",
"headline": "Co-chair, Bill & Melinda Gates Foundation",
"description": "Sharing things I'm learning through my foundation work and other interests.",
"location": "Seattle, Washington, United States",
"industry": "Philanthropic Fundraising Services",
"vmid": "251749025",
"sales_nav_url": "https://www.linkedin.com/sales/people/251749025",
"connection_degree": "2",
"connections_url": "https://www.linkedin.com/search/results/people/?facetConnectionOf=%5B%22251749025%22%5D",
"mutual_connections_url": "https://www.linkedin.com/search/results/people/?facetNetwork=%5B%22F%22%5D&facetConnectionOf=%5B%22251749025%22%5D",
"mutual_connections_text": "3 mutual connections",
"picture_url": "https://media.licdn.com/dms/image/v2/example.jpg",
"background_picture_url": "https://media.licdn.com/dms/image/v2/example-bg.jpg",
"is_creator": true,
"open_to_work": false,
"num_connections": 500,
"num_followers": 35000000,
"skills": [
"Software Development",
"Philanthropy"
],
"job_1": {},
"job_1_title": "Co-chair",
"job_1_company_name": "Bill & Melinda Gates Foundation",
"job_1_company_url": "https://www.linkedin.com/company/bill-melinda-gates-foundation/",
"job_1_company_logo": "https://media.licdn.com/dms/image/v2/example-logo.jpg",
"job_1_location": "Seattle, WA",
"job_1_description": "Leading philanthropic initiatives...",
"job_1_start_year": 2000,
"job_1_start_month": 1,
"job_1_end_year": null,
"job_1_end_month": null,
"job_2": {},
"job_2_title": null,
"job_2_company_name": null,
"job_2_company_url": null,
"job_2_company_logo": null,
"job_2_location": null,
"job_2_description": null,
"job_2_start_year": null,
"job_2_start_month": null,
"job_2_end_year": null,
"job_2_end_month": null,
"job_3": {},
"job_3_title": null,
"job_3_company_name": null,
"job_3_company_url": null,
"job_3_company_logo": null,
"job_3_location": null,
"job_3_description": null,
"job_3_start_year": null,
"job_3_start_month": null,
"job_3_end_year": null,
"job_3_end_month": null,
"education_1": {},
"education_2": {},
"education_3": {},
"interests_companies": [],
"interests_groups": [],
"featured_1": {},
"featured_2": {},
"featured_3": {},
"jobs": [],
"educations": [],
"functions": null,
"scraping_time": "2026-04-01T10:00:00Z",
"native_id": 55625
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/linkedin-leads-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the LinkedIn Leads Scraper settings including enrichment options
Configure your LinkedIn Leads Scraper squid settings. Control result limits and enable email enrichment or profile detail collection.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_results** | integer | 1000 | Maximum number of leads to collect per task |
| **max\_unique\_results\_per\_run** | integer | — | Maximum unique results across all tasks in the entire run |
| **skip\_collected\_leads** | boolean | false | Skip profiles already collected by this squid in a previous run, so each run returns only new leads |
## Optional Functions
Enable these in the `params.functions` object:
| Function | Type | Default | Description |
| - | - | - | - |
| **email\_enrichment** | boolean | true | Find email addresses for each profile (9 credits per profile where an email is found) |
| **scrape\_profile\_details** | boolean | true | Collect additional profile details from each LinkedIn profile page (1 credit per profile) |
| **extended\_profile\_data** | boolean | true | Also collect the companies and groups each person follows, and their featured posts (requires scrape\_profile\_details) |
| **enrich\_company** | boolean | false | Enrich each lead's current company from its LinkedIn company page: website, domain, industry, headcount, and more (1 credit per lead) |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **accounts** | array | Array of linked LinkedIn account hashes (required) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Both `email_enrichment` and `scrape_profile_details` are enabled by default. Disable them if not needed to reduce credit usage.
This scraper requires a synced LinkedIn account. Add your LinkedIn cookies in the Accounts section before running.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "LinkedIn Leads Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 1000,
"functions": {
"email_enrichment": true,
"scrape_profile_details": true
}
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "LinkedIn Leads Scraper (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_results": 1000,
"functions": {
"email_enrichment": True, # 9 credits per profile with email
"scrape_profile_details": True # 1 credit per profile
}
}
}
)
data = response.json()
print(f"Settings updated: {data['name']}")
```
## Response
```json 201 theme={null}
{
"name": "LinkedIn Leads Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 1000,
"functions": {
"email_enrichment": true,
"scrape_profile_details": true
}
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/linkedin-posts-commenters-and-likers-scraper/add-tasks
POST https://api.lobstr.io/v2/squid/{squid_id}/task
Add LinkedIn post URLs to scrape commenters and likers using the lobstr.io API
Add LinkedIn post URLs as tasks to your squid. The scraper will extract all users who commented on or reacted to the post, along with their profile information.
Crawler ID: `8a309e0e0df48511111a9da6382b2ef8`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## URL Format
Use any LinkedIn post URL format:
`https://www.linkedin.com/posts/username_post-title-activity-123456789/`
`https://www.linkedin.com/feed/update/urn:li:activity:123456789/`
You can copy the URL directly from any LinkedIn post.
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **post\_url** | string | Yes | URL of the LinkedIn Post to scrape |
Scrape viral posts in your industry to build targeted lead lists from engaged audiences.
The scraper extracts both commenters and likers by default. Use settings to toggle each separately.
Posts from LinkedIn influencers often have high-quality engaged audiences for B2B outreach.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/api/v2/squid/YOUR_SQUID_ID/task" \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"post_url": "https://www.linkedin.com/posts/example_great-post-activity-7403510298726375424-RIMy"
}'
```
```python Python theme={null}
import requests
API_TOKEN = "YOUR_API_TOKEN"
SQUID_ID = "YOUR_SQUID_ID"
url = f"https://api.lobstr.io/api/v2/squid/{SQUID_ID}/task"
headers = {
"Authorization": f"Token {API_TOKEN}",
"Content-Type": "application/json"
}
data = {
"post_url": "https://www.linkedin.com/posts/example_great-post-activity-7403510298726375424-RIMy"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
```
## Response
```json 200 theme={null}
{
"id": "task_abc123def456",
"status": "pending",
"created_at": "2025-01-15T10:30:00Z",
"post_url": "https://www.linkedin.com/posts/example_great-post-activity-7403510298726375424-RIMy"
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/linkedin-posts-commenters-and-likers-scraper/credit-cost
Credit cost for the LinkedIn Post Commenter & Liker Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Post Likers & Commenters | 1 | 1 credit per extracted profile (likers/commenters). |
| Email Enrichment | 9 | 9 credits per profile enriched. No email = 0 credits. |
# Get Results
Source: https://docs.lobstr.io/examples/linkedin-posts-commenters-and-likers-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Linkedin Posts Commenters and Likers Scraper
Retrieve scraped data from your **Linkedin Posts Commenters and Likers Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Direct URL to the LinkedIn profile of the person who commented or liked. Example: `https://www.linkedin.com/in/jonathan-sardo`
First name of the LinkedIn member. Example: `Jonathan`
Last name of the LinkedIn member. Example: `SARDO`
Full name of the LinkedIn member. Example: `Jonathan SARDO`
Email address found or enriched for this LinkedIn member. Example: `jonathan.sardo@uccellolabs.com`
Validation status of the email address (e.g. valid, risky, invalid). Example: `valid`
URL of the LinkedIn post being analyzed. Example: `https://www.linkedin.com/posts/ramzib_une-nouvelle-trend-arrive-sur-les-r%C3%A9seaux-activity-7419012050967748609-UkSj`
Whether this person commented on the post. Example: `true`
Text content of the comment left on the LinkedIn post. Example: \`Je partage pas l'image car elle fait peur 😂
Mais voilà ses arguments :
Dans un monde où une IA prendrait le contrôle, les profils comme le tien ne seraient ni éliminés, ni ignorés.
Ils seraient neutralisés symboliquement : contenus, mais observés.\`
Direct URL to the comment on the LinkedIn post. Example: `https://www.linkedin.com/feed/update/urn:li:activity:7419012050967748609?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7419012050967748609%2C7419056809266618368%29&dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287419056809266618368%2Curn%3Ali%3Aactivity%3A7419012050967748609%29`
Whether this person liked or reacted to the post. Example: `false`
Type of reaction left on the post (e.g. Like, Celebrate, Support, Insightful)
Whether this entry is a commenter or a liker. Example: `comment`
Additional enrichment functions enabled for this record. Example: `[]`
Timestamp when this record was scraped. Example: `2026-03-19T11:34:43Z`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 78774,
"object": "result",
"squid": "0d40a71e44764f9a0c27d7d8b96f1a9e",
"run": "0f8599c4bad134f6b93570b40db20527",
"profile_url": "https://www.linkedin.com/in/jonathan-sardo",
"first_name": "Jonathan",
"last_name": "SARDO",
"full_name": "Jonathan SARDO",
"email": "jonathan.sardo@uccellolabs.com",
"email_status": "valid",
"post_url": "https://www.linkedin.com/posts/ramzib_une-nouvelle-trend-arrive-sur-les-r%C3%A9seaux-activity-7419012050967748609-UkSj",
"has_commented": true,
"comment": "Je partage pas l'image car elle fait peur 😂\n\nMais voilà ses arguments :\n\nDans un monde où une IA prendrait le contrôle, les profils comme le tien ne seraient ni éliminés, ni ignorés.\nIls seraient neutralisés symboliquement : contenus, mais observés.",
"comment_url": "https://www.linkedin.com/feed/update/urn:li:activity:7419012050967748609?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7419012050967748609%2C7419056809266618368%29&dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287419056809266618368%2Curn%3Ali%3Aactivity%3A7419012050967748609%29",
"has_liked": false,
"reaction_type": null,
"result_type": "comment",
"functions": null,
"scraping_time": "2026-03-19T11:34:43Z",
"native_id": 78774
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/linkedin-posts-commenters-and-likers-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the LinkedIn Posts Commenters and Likers Scraper settings
Configure your LinkedIn Posts Commenters and Likers Scraper squid settings. Control which engagement types to scrape and enable email enrichment.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **scrape\_comments** | boolean | true | Enable to scrape users who commented on the post |
| **scrape\_reactions** | boolean | true | Enable to scrape users who reacted (liked) the post |
| **email\_enrichment** | boolean | false | Enable email enrichment to find email addresses (9 credits per profile where an email is found) |
| **max\_results** | integer | unlimited | Maximum results to collect per post |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the run |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
## Email Enrichment
When email enrichment is enabled, lobstr.io will attempt to find email addresses for each profile.
**Pricing:** 9 credits per profile where an email is found. No email found = 0 credits charged.
Enriched emails include validation status: `valid`, `invalid`, `catch-all`, etc.
Set `scrape_comments` to true only if you want users who engaged deeply with the content.
Email enrichment costs 9 credits per profile where an email is found. Disable if you don't need emails.
Commenters often have higher intent than passive likers - filter accordingly for outreach campaigns.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "LinkedIn Posts Commenters and Likers Scraper (1)",
"concurrency": 5,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"scrape_comments": true,
"scrape_reactions": true,
"email_enrichment": false,
"max_results": 1000
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
payload = {
"name": "LinkedIn Posts Commenters and Likers Scraper (1)",
"concurrency": 5,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"scrape_comments": True,
"scrape_reactions": True,
"email_enrichment": False,
"max_results": 1000
}
}
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json=payload
)
print(f"Settings updated: {response.json()['name']}")
```
## Response
```json 201 theme={null}
{
"name": "LinkedIn Posts Commenters and Likers Scraper (1)",
"concurrency": 5,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"scrape_comments": true,
"scrape_reactions": true,
"email_enrichment": false,
"max_results": 1000
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/linkedin-posts-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add LinkedIn URLs to scrape posts
Add LinkedIn URLs to your **LinkedIn Posts Scraper** squid. Each task accepts a profile URL (collects recent posts from that member), a company URL (collects recent posts from that company), or a direct post URL (collects that single post).
Crawler ID: `6a9159b682cfb187977ae5c645e4df7a`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the LinkedIn Posts Scraper crawler |
| **tasks** | array | Yes | Array of task objects, each containing a `linkedin_url` field |
## Task Object
| Field | Type | Required | Description |
| - | - | - | - |
| **linkedin\_url** | string | Yes | LinkedIn profile URL, company URL, or direct post URL |
Accepted URL formats:
* Profile: `https://www.linkedin.com/in/username/`
* Company: `https://www.linkedin.com/company/company-name/`
* Post: `https://www.linkedin.com/feed/update/urn:li:activity:1234567890/`
This scraper requires a LinkedIn account to be linked to your squid. See [Link Account to Squid](/docs/link-account-to-squid).
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"linkedin_url": "https://www.linkedin.com/in/username/"},
{"linkedin_url": "https://www.linkedin.com/company/openai/"}
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
payload = {
"squid": squid_id,
"tasks": [
{"linkedin_url": "https://www.linkedin.com/in/username/"},
{"linkedin_url": "https://www.linkedin.com/company/openai/"}
]
}
response = requests.post(f"{BASE_URL}/tasks", headers=headers, json=payload)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates skipped: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"created_at": "2026-06-09T10:00:00.000000",
"is_active": true,
"params": {
"linkedin_url": "https://www.linkedin.com/in/username/"
},
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/linkedin-posts-scraper/credit-cost
Credit cost for the LinkedIn Posts Scraper
1 credit per post.
# Get Results
Source: https://docs.lobstr.io/examples/linkedin-posts-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped posts from LinkedIn Posts Scraper
Retrieve scraped posts from your **LinkedIn Posts Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique LinkedIn activity URN of the post. Example: `urn:li:activity:7202146404788580353`
Direct URL of the LinkedIn post. Example: `https://www.linkedin.com/feed/update/urn:li:activity:7202146404788580353`
Full text content of the post.
ISO datetime when the post was published. Example: `2024-05-31T03:18:32Z`
Unix timestamp in milliseconds when the post was published. Example: `1717125512311`
Human-readable relative time since the post was published. Example: `2w`
Whether this post is a repost/share of another post. Example: `false`
Type of the post: `text`, `image`, `video`, `article`, `document`, `poll`, etc. Example: `image`
Main/cover image URL of the post.
JSON array of all image URLs attached to the post.
Type of the post author: `Person` or `Company`. Example: `Person`
LinkedIn profile URL of the post author. Example: `https://www.linkedin.com/in/mariela-garcia-de-fabbri`
LinkedIn internal profileId (miniProfileUrn) of the post author. Example: `ACoAACDe59sBx8ChxT_OJagid6rniBLlYctSmFg`
LinkedIn public slug of the post author. Example: `mariela-garcia-de-fabbri`
Full name of the post author. Example: `Mariela Garcia de Fabbri`
First name of the post author. Example: `Mariela`
Last name of the post author. Example: `Garcia de Fabbri`
LinkedIn headline / occupation of the post author. Example: `Peruana. Economista. Líder empresarial.`
Profile picture URL of the post author.
Background/banner image URL of the post author's profile.
Full structured author object (JSON) with `firstName`, `lastName`, `occupation`, `id`, `publicId`, `profileId`, `picture`, `backgroundImage`.
Total number of likes/reactions on the post. Example: `62`
Total number of comments on the post. Example: `1`
Total number of shares/reposts of the post. Example: `0`
JSON breakdown of reactions by type. Example: `{"LIKE": 27, "PRAISE": 3, "EMPATHY": 1}`
JSON array of hashtag keywords referenced in the post text. Example: `["opentowork", "hiring"]`
JSON array of profile and company mentions in the post text, each with `public_id`, `first_name`, `last_name`, `start`, `length`, and `type`.
JSON array of inline attributes in the post text (profile mentions, hashtags, URLs, etc.) with character offsets.
JSON array of up to 3 top comments, each with `author_name`, `author_url`, `author_picture`, `text`, `date_published`, and `num_likes`.
When this post is a repost, the original post payload (JSON) including `urn`, `author_name`, `author_profile_url`, and `text`. Null otherwise.
JSON object with structured media attached to the post: article, video, poll, document, or event details beyond plain image URLs.
Share audience of the post. Example: `PUBLIC`
Whether commenting is disabled on the post. Example: `false`
Audience scope allowed to comment. Example: `ALL`
Whether reacting to the post is allowed.
Whether commenting on the post is allowed.
Whether sharing/reposting the post is allowed.
Whether this is the root share (original post, not a nested reshare).
Original input URL used to discover this post. Example: `https://www.linkedin.com/in/gaspard-lezin/`
Timestamp when this record was scraped. Example: `2026-04-21T15:55:00Z`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 24544,
"object": "result",
"squid": "7ec19092d4f836fc9515441257ab2aff",
"run": "488bc2ee86a324eb6ef20be18e71b824",
"urn": "urn:li:activity:7202146404788580353",
"post_url": "https://www.linkedin.com/feed/update/urn:li:activity:7202146404788580353",
"text": "Carmix lovers\nMax Galante Manuela Galante Alberto Parodi De La Cuadra Victor Saldaña Blanco",
"posted_at": "2024-05-31T03:18:32Z",
"posted_at_timestamp": 1717125512311,
"time_since_posted": "2w",
"is_repost": false,
"post_type": "image",
"image": "https://media.licdn.com/dms/image/D4E22AQFsIJ8c-Cf6tA/feedshare-shrink_2048_1536/0/1717125507406",
"images": [
"https://media.licdn.com/dms/image/D4E22AQFsIJ8c-Cf6tA/feedshare-shrink_2048_1536/0/1717125507406"
],
"author_type": "Person",
"author_profile_url": "https://www.linkedin.com/in/mariela-garcia-de-fabbri",
"author_profile_id": "ACoAACDe59sBx8ChxT_OJagid6rniBLlYctSmFg",
"author_public_id": "mariela-garcia-de-fabbri",
"author_full_name": "Mariela Garcia de Fabbri",
"author_first_name": "Mariela",
"author_last_name": "Garcia de Fabbri",
"author_headline": "Peruana. Economista. Líder empresarial. Amante de la familia",
"author_picture": "https://media.licdn.com/dms/image/D4E03AQHGA2JeAKPGtA/profile-displayphoto-shrink_100_100/0/1691852952911",
"author_background_image": "https://media.licdn.com/dms/image/C4E16AQHTeQPBMnMOdg/profile-displaybackgroundimage-shrink_200_800/0/1636434126831",
"author": {
"firstName": "Mariela",
"lastName": "Garcia de Fabbri",
"occupation": "Peruana. Economista. Líder empresarial. Amante de la familia",
"id": "551479259",
"publicId": "mariela-garcia-de-fabbri",
"profileId": "ACoAACDe59sBx8ChxT_OJagid6rniBLlYctSmFg"
},
"num_likes": 62,
"num_comments": 1,
"num_shares": 0,
"reaction_counts": {
"LIKE": 27,
"PRAISE": 3,
"EMPATHY": 1
},
"hashtags": [
"opentowork",
"hiring"
],
"mentions": [
{
"public_id": "salihoff",
"first_name": "Akmal",
"last_name": "Salikhov",
"start": 1383,
"length": 14,
"type": "PROFILE_MENTION"
}
],
"attributes": [
{
"start": 14,
"length": 11,
"type": "PROFILE_MENTION",
"profile": {
"firstName": "Max",
"lastName": "Galante",
"publicId": "massimilianogalante"
}
}
],
"top_comments": [
{
"text": "Great post!",
"author_name": "John Doe",
"author_url": "https://www.linkedin.com/in/john",
"author_picture": null,
"date_published": "2026-01-30T16:00:00Z",
"num_likes": 3
}
],
"reshared_post": {
"urn": "urn:li:activity:7422993022872612864",
"share_urn": "urn:li:ugcPost:7422993022872612864",
"author_name": "Original Author",
"author_profile_url": "https://www.linkedin.com/in/original",
"text": "Original post text"
},
"media_details": {
"type": "article",
"title": "Example Article",
"subtitle": "example.com",
"url": "https://example.com/article",
"thumbnail": "https://..."
},
"share_audience": "PUBLIC",
"commenting_disabled": false,
"allowed_commenters_scope": "ALL",
"can_react": true,
"can_post_comments": true,
"can_share": true,
"root_share": true,
"profile_input_url": "https://www.linkedin.com/in/gaspard-lezin/",
"scraping_time": "2026-04-21T15:55:00Z",
"functions": null,
"native_id": 24544
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/linkedin-posts-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure LinkedIn Posts Scraper parameters
Configure your **LinkedIn Posts Scraper** squid settings to control how many posts are collected and apply time-based filtering.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_results** | integer | unlimited | Maximum number of posts to collect per task (per profile or company URL). Ignored when the input is a direct post URL |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the entire run |
| **fetch\_since** | string | null | Stop scraping when posts older than this threshold are reached (based on `posted_at`). Use a relative duration (24h, 7d, 2w) or an absolute date (YYYY-MM-DD HH:MM:SS). Ignored when the input is a direct post URL |
| **fetch\_since\_timezone** | string | null | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Only applies when `fetch_since` is an absolute date — ignored for relative values. See [supported timezones](/docs/timezones) |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Use `fetch_since: "7d"` combined with a scheduled run to monitor LinkedIn activity and capture only new posts each week.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "LinkedIn Posts Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 50,
"fetch_since": "7d",
"fetch_since_timezone": null
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "LinkedIn Posts Scraper (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_results": 50,
"fetch_since": "7d", # relative: "24h", "7d", "2w" | absolute: "2026-01-01 00:00:00"
"fetch_since_timezone": None # e.g. "Europe/Paris" — only used with absolute fetch_since
}
}
)
print(f"Settings updated: {response.json()['name']}")
```
## Response
```json 201 theme={null}
{
"name": "LinkedIn Posts Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 50,
"fetch_since": "7d",
"fetch_since_timezone": null
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/linkedin-profile-email-scraper-no-login/add-tasks
POST https://api.lobstr.io/v1/tasks
Add LinkedIn profile URLs to scrape without a LinkedIn account
Add LinkedIn profile URLs to your **LinkedIn Profile & Email Scraper (No Login)** squid. No LinkedIn account is required.
Crawler ID: `e7c4200bab5942e5329f711e26c0666b`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the LinkedIn Profile & Email Scraper (No Login) |
| **tasks** | array | Yes | Array of task objects, each containing a `linkedin_url` field |
## Task Object
| Field | Type | Required | Description |
| - | - | - | - |
| **linkedin\_url** | string | Yes | LinkedIn profile URL (e.g. `https://www.linkedin.com/in/williamhgates`) or bare slug (e.g. `williamhgates`) |
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{
"linkedin_url": "https://www.linkedin.com/in/williamhgates"
},
{
"linkedin_url": "https://www.linkedin.com/in/jeffweiner08"
}
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
payload = {
"squid": squid_id,
"tasks": [
{"linkedin_url": "https://www.linkedin.com/in/williamhgates"},
{"linkedin_url": "https://www.linkedin.com/in/jeffweiner08"}
]
}
response = requests.post(f"{BASE_URL}/tasks", headers=headers, json=payload)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates skipped: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"created_at": "2026-06-09T10:00:00.000000",
"is_active": true,
"params": {
"linkedin_url": "https://www.linkedin.com/in/williamhgates"
},
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/linkedin-profile-email-scraper-no-login/credit-cost
Credit cost for the LinkedIn Profile & Email Scraper (No Login)
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Profile | 3 | 3 credits per profile |
| Email Enrichment | 9 | 9 credits per profile enriched. No email = 0 credits. |
# Get Results
Source: https://docs.lobstr.io/examples/linkedin-profile-email-scraper-no-login/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped profiles from LinkedIn Profile & Email Scraper (No Login)
Retrieve scraped profiles from your **LinkedIn Profile & Email Scraper (No Login)** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
First and last name concatenated. Example: `Bill Gates`
First name on the profile. Example: `Bill`
Last name on the profile. Example: `Gates`
Email found via Lobstr.io's enrichment service. Only populated when `email_enrichment` is enabled.
Validation status of the enriched email: `valid`, `risky`, etc.
Profile headline — the short tagline shown under the name. Example: `Co-chair, Bill & Melinda Gates Foundation`
Full About / summary section of the profile.
First few skill names joined with `•`. Example: `Leadership • Strategic Planning • Philanthropy`
Human-readable location string from the profile. Example: `Seattle, Washington, United States`
ISO country code resolved from the profile's geo location. Example: `US`
Resolved industry name. Example: `Philanthropic Fundraising Services`
JSON array of work positions: title, company, location, employment type, dates, and description.
JSON array of education entries: school, degree, field of study, dates, and description.
JSON array of skills with name and entity URN.
JSON array of certifications: name, issuer, license number, dates, URL, and issuing authority.
JSON array of courses: name, course number, and school association.
JSON array of projects: title, description, URL, and dates.
JSON array of publications: name, publisher, description, URL, and published date.
JSON array of honors and awards: title, issuer, description, and issued date.
JSON array of organizations, clubs, or professional bodies the member is affiliated with.
JSON array of standardized test scores listed on the profile (e.g. TOEFL, TOEIC, GMAT).
JSON array of languages with name and proficiency level.
JSON array of volunteer experiences: role, organization, cause, description, and dates.
JSON array of volunteer cause codes the member supports.
JSON array of items in the Featured section: posts, articles, links, and photos.
Direct URL to the highest-resolution profile picture available.
Direct URL to the largest cover/background image available.
Public LinkedIn profile URL. Example: `https://www.linkedin.com/in/williamhgates`
Public LinkedIn profile identifier. Example: `williamhgates`
LinkedIn fsd\_profile entity URN. Example: `urn:li:fsd_profile:ACoAAA8BYqEBhiA97dDu2Y4PxFPgBcPlMHXHQw4`
Stable numeric member URN.
Whether the member has LinkedIn Premium.
Whether the member is a LinkedIn Influencer.
Whether the profile has Creator Mode enabled.
Whether the LinkedIn Premium badge is displayed on the profile.
Whether the profile has been memorialized (account of a deceased member).
Connection distance from the scraping account: `DISTANCE_1`, `DISTANCE_2`, `DISTANCE_3`, or `OUT_OF_NETWORK`.
Profile's primary display locale code. Example: `en_US`
JSON array of all locales supported on the profile, each as `{country, language}`.
JSON array of the profile headline in each supported locale, each as `{headline, locale}`.
JSON array of the About/summary section in each supported locale, each as `{summary, locale}`.
JSON array of recommended/related profiles surfaced in the same response.
UTC timestamp when the profile was scraped.
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 81732,
"object": "result",
"squid": "e35dbeaaa8053607b4acc68ce18f479c",
"run": "2edbe230bc318e0c262749985ddeafac",
"full_name": "Bill Gates",
"first_name": "Bill",
"last_name": "Gates",
"email": "bill@gatesfoundation.org",
"email_status": "valid",
"headline": "Co-chair, Bill & Melinda Gates Foundation",
"summary": "Co-chair of the Bill & Melinda Gates Foundation…",
"top_skills": "Pharmacology • Patient Counseling",
"location_name": "Seattle, Washington, United States",
"country_code": "US",
"industry_name": "Pharmaceutical Manufacturing",
"positions": [],
"educations": [],
"skills": [],
"certifications": [],
"courses": [],
"projects": [],
"publications": [],
"honors_and_awards": [],
"organizations": [
{
"name": "Forum ENSAE Paristech",
"position_held": "Treasurer",
"description": "…",
"date_range": {}
}
],
"test_scores": [
{
"name": "TOEFL IBT",
"score": "111/120",
"date": {
"year": 2019,
"month": 10
},
"description": null
}
],
"languages": [],
"volunteer_experiences": [],
"volunteer_causes": [
"HEALTH",
"ANIMAL_WELFARE"
],
"featured_items": [
{
"title": "…",
"description": "…",
"provider_name": "Vogue",
"url": "…",
"image_url": "…"
}
],
"profile_picture_url": "https://media.licdn.com/dms/image/v2/.../profile-displayphoto-shrink_800_800/...",
"background_image_url": "https://media.licdn.com/dms/image/v2/.../profile-displaybackgroundimage-shrink_350_1400/...",
"linkedin_url": "https://www.linkedin.com/in/williamhgates",
"slug": "williamhgates",
"entity_urn": "urn:li:fsd_profile:ACoAACLevxsBfWQoDUYkHyCP2jzl81cDAvckQEI",
"object_urn": "urn:li:member:585023259",
"premium": false,
"influencer": false,
"is_creator": false,
"show_premium_subscriber_badge": false,
"memorialized": false,
"member_distance": "OUT_OF_NETWORK",
"primary_locale": "en_US",
"supported_locales": [
{
"country": "US",
"language": "en"
}
],
"multi_locale_headline": [
{
"headline": "Co-chair, Bill & Melinda Gates Foundation",
"locale": "en_US"
}
],
"multi_locale_summary": [
{
"summary": "Co-chair…",
"locale": "en_US"
}
],
"more_profiles": [],
"scraping_time": "2026-05-06T15:11:14Z",
"functions": null,
"native_id": 81732
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/linkedin-profile-email-scraper-no-login/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the LinkedIn Profile & Email Scraper (No Login) settings
Configure your **LinkedIn Profile & Email Scraper (No Login)** squid settings. Enable email enrichment to find verified email addresses for each profile.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **email\_enrichment** | boolean | true | Find verified email addresses using Lobstr.io's enrichment service. Costs 9 credits per enriched profile. No email found = 0 credits. |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the run |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Email enrichment (`email_enrichment`) is enabled by default. Disable it if you only need profile data and want to avoid enrichment credit usage.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "LinkedIn Profile & Email Scraper (No Login) (1)",
"concurrency": 2,
"export_unique_results": true,
"to_complete": true,
"params": {
"email_enrichment": true,
"max_unique_results_per_run": 500
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "LinkedIn Profile & Email Scraper (No Login) (1)",
"concurrency": 2,
"export_unique_results": True,
"to_complete": True,
"params": {
"email_enrichment": True,
"max_unique_results_per_run": 500
}
}
)
print(f"Settings updated: {response.json()['name']}")
```
## Response
```json 201 theme={null}
{
"name": "LinkedIn Profile & Email Scraper (No Login) (1)",
"concurrency": 2,
"export_unique_results": true,
"to_complete": true,
"params": {
"email_enrichment": true,
"max_unique_results_per_run": 500
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/linkedin-profile-scraper/add-tasks
POST https://api.lobstr.io/v2/squid/{squid_id}/task
Add LinkedIn profile URLs to scrape using the lobstr.io API
Add LinkedIn profile URLs as tasks to your squid. The scraper will extract comprehensive profile data from each LinkedIn profile you provide.
You can use various LinkedIn profile URL formats, including international versions.
Crawler ID: `5c11752d8687df2332c08247c4fb655a`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## URL Formats
**Supported URL formats:**
`https://www.linkedin.com/in/username/`
`https://linkedin.com/in/username`
`https://fr.linkedin.com/in/username/` (international)
The URL must be a valid LinkedIn profile URL containing `/in/` followed by the user's identifier.
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **url** | string | Yes | LinkedIn profile URL to scrape |
You can add profiles in bulk by making multiple API requests or using the batch upload feature.
The scraper accepts both standard and international LinkedIn profile URLs (e.g., fr.linkedin.com, de.linkedin.com).
Use Sales Navigator lead export URLs or regular LinkedIn profile URLs - both work with this scraper.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/api/v2/squid/YOUR_SQUID_ID/task" \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.linkedin.com/in/williamhgates/"
}'
```
```python Python theme={null}
import requests
API_TOKEN = "YOUR_API_TOKEN"
SQUID_ID = "YOUR_SQUID_ID"
url = f"https://api.lobstr.io/api/v2/squid/{SQUID_ID}/task"
headers = {
"Authorization": f"Token {API_TOKEN}",
"Content-Type": "application/json"
}
data = {
"url": "https://www.linkedin.com/in/williamhgates/"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
```
## Response
```json 200 theme={null}
{
"id": "task_abc123def456",
"squid_id": "YOUR_SQUID_ID",
"url": "https://www.linkedin.com/in/williamhgates/",
"status": "pending",
"created_at": "2024-01-15T10:30:00Z"
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/linkedin-profile-scraper/credit-cost
Credit cost for the LinkedIn Profile Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Profile | 1 | 1 credit per profile. |
| Email Enrichment | 9 | 9 credits per profile enriched. No email = 0 credits. |
# Get Results
Source: https://docs.lobstr.io/examples/linkedin-profile-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Linkedin Profile Scraper
Retrieve scraped data from your **Linkedin Profile Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Direct URL to the LinkedIn profile. Example: `https://www.linkedin.com/in/david-shibley`
LinkedIn public profile slug used in the profile URL. Example: `david-shibley`
First name of the LinkedIn member. Example: `David`
Last name of the LinkedIn member. Example: `Shibley`
Full name of the LinkedIn member. Example: `David Shibley`
Email address found or enriched for this LinkedIn member. Example: `dave@melcap.com`
Validation status of the email address (e.g. valid, risky, invalid). Example: `valid`
Professional headline shown below the name on the LinkedIn profile. Example: `Vice President of Business Strategy at Cassidy Advertising`
About or summary text from the LinkedIn profile. Example: `With over 5 years of professional client services experience, currently serving as Vice President of Business Strategy at Cassidy Advertising & Consulting, contributing to strategic planning and client engagement. Committed to fostering collaborative growth and aligning strategies to advance organizational goals. Past roles as Investment Banking Associate and Staff Accountant honed expertise in financial data analysis, reporting, and deal structuring. Skilled in business strategy, client relations, and leveraging insights and analytics for impactful outcomes.`
Location shown on the LinkedIn profile. Example: `Cleveland, Ohio, United States`
Industry the person works in as listed on LinkedIn. Example: `Marketing & Advertising`
LinkedIn internal member ID (vmid). Example: `ACoAABBSYCEB2RG5DGmF2FHaW3QIGLMpHLChBRc`
URL to the person's LinkedIn Sales Navigator profile. Example: `https://www.linkedin.com/sales/people/ACoAABBSYCEB2RG5DGmF2FHaW3QIGLMpHLChBRc`
Degree of connection between this profile and the scraping account (1st, 2nd, 3rd). Example: `3`
URL to this profile's connections list on LinkedIn. Example: `https://www.linkedin.com/search/results/people/?facetConnectionOf=%5B%22ACoAABBSYCEB2RG5DGmF2FHaW3QIGLMpHLChBRc%22%5D&facetNetwork=%5B%22F%22%2C%22S%22%5D&origin=MEMBER_PROFILE_CANNED_SEARCH`
URL to the mutual connections between this profile and the scraping account. Example: `https://www.linkedin.com/search/results/people/?facetNetwork=%5B%22F%22%5D&facetConnectionOf=%5B%22ACoAABBSYCEB2RG5DGmF2FHaW3QIGLMpHLChBRc%22%5D&origin=MEMBER_PROFILE_CANNED_SEARCH&RESULT_TYPE=PEOPLE`
Text summary describing mutual connections. Example: `0 mutual connections`
URL of the LinkedIn profile picture. Example: `https://media.licdn.com/dms/image/v2/D5603AQFQQKystZJSAA/profile-displayphoto-scale_400_400/B56ZmfjYy4JkAk-/0/1759318479293?e=1775692800&v=beta&t=SAzzG76z7sunESZpozYWL5uc-nAg4BMMDjfUwIIXtAk`
URL of the LinkedIn profile's background banner image. Example: `https://media.licdn.com/dms/image/v2/D4D16AQFV1Mlvp-78Uw/profile-displaybackgroundimage-shrink_200_800/B4DZm_ItgpGkAU-/0/1759848357816?e=1775692800&v=beta&t=Ix85xp8Ly5B8H6R94ZCMU_T9WAkTxkZJmeyRacB9GGk`
Whether the account has creator mode enabled on LinkedIn. Example: `False`
Whether the profile has the Open to Work banner enabled. Example: `false`
Total number of 1st-degree LinkedIn connections. Example: `1344`
Total number of LinkedIn followers. Example: `1348`
Skills listed on the LinkedIn profile. Example: `['Microsoft Excel', 'Event Planning', 'Public Speaking', 'PowerPoint', 'Leadership', 'Microsoft PowerPoint', 'Social Media', 'Microsoft Office', 'Microsoft Word', 'Customer Service', 'Management', 'Strategic Planning']`
JSON object for the 1st work experience entry on the LinkedIn profile. Example: `{'title': 'Vice President of Business Strategy', 'end_year': None, 'location': None, 'end_month': None, 'start_year': 2025, 'company_url': 'https://www.linkedin.com/company/1620351/', 'description': None, 'start_month': 9, 'company_logo': 'https://media.licdn.com/dms/image/v2/C4E0BAQGNJvt99hfofA/company-logo_400_400/company-logo_400_400/0/1630579191372/cassidy_advertising__consulting_llc_logo?e=1775692800&v=beta&t=KDDsoQaD9Swq9jcjc27uPPZCez_CmDuWLMlhr5yuvSc', 'company_name': 'Cassidy Advertising & Consulting LLC'}`
JSON object for the 2nd work experience entry on the LinkedIn profile. Example: `{'title': 'Investment Banking Associate', 'end_year': 2025, 'location': None, 'end_month': 8, 'start_year': 2024, 'company_url': 'https://www.linkedin.com/company/5562018/', 'description': None, 'start_month': 1, 'company_logo': 'https://media.licdn.com/dms/image/v2/C4E0BAQHNzoXUJzRBmA/company-logo_400_400/company-logo_400_400/0/1631334371809?e=1775692800&v=beta&t=-Rj5v_dklXsykly2yPwy7xKK8j07MXRpqiiQeYzSLUM', 'company_name': 'MelCap Partners, LLC'}`
JSON object for the 3rd work experience entry on the LinkedIn profile. Example: `{'title': 'Investment Banking Analyst', 'end_year': 2023, 'location': None, 'end_month': 12, 'start_year': 2022, 'company_url': 'https://www.linkedin.com/company/5562018/', 'description': None, 'start_month': 8, 'company_logo': 'https://media.licdn.com/dms/image/v2/C4E0BAQHNzoXUJzRBmA/company-logo_400_400/company-logo_400_400/0/1631334371809?e=1775692800&v=beta&t=-Rj5v_dklXsykly2yPwy7xKK8j07MXRpqiiQeYzSLUM', 'company_name': 'MelCap Partners'}`
JSON object for the 4th work experience entry on the LinkedIn profile. Example: `{'title': 'Audit Staff Accountant', 'end_year': 2022, 'location': 'Cleveland, Ohio, United States', 'end_month': 8, 'start_year': 2020, 'company_url': 'https://www.linkedin.com/company/21984/', 'description': None, 'start_month': 9, 'company_logo': 'https://media.licdn.com/dms/image/v2/D4E0BAQHTKbL7_5S_kw/company-logo_400_400/company-logo_400_400/0/1730466042261/marcum_llp_logo?e=1775692800&v=beta&t=Uszcw8JZwdF_F8rdgJpYEMGhq64Pa5bih2ARS15bTO4', 'company_name': 'Marcum LLP'}`
JSON object for the 5th work experience entry on the LinkedIn profile. Example: `{'title': 'Graduate Student', 'end_year': 2020, 'location': 'South Bend, Indiana Area', 'end_month': 5, 'start_year': 2019, 'company_url': 'https://www.linkedin.com/company/15102069/', 'description': 'Masters of Science in Accountancy Class of 2020', 'start_month': 8, 'company_logo': 'https://media.licdn.com/dms/image/v2/C4D0BAQGU6YLdAy1dTw/company-logo_400_400/company-logo_400_400/0/1630544558231/university_of_notre_dame___mendoza_college_of_business_logo?e=1775692800&v=beta&t=QQRvJBsKyL5p8rcdKApPyrMRHhgcrDivWuA1QsGvpJA', 'company_name': 'University of Notre Dame - Mendoza College of Business'}`
JSON object for the 6th work experience entry on the LinkedIn profile. Example: `{}`
JSON object for the 7th work experience entry on the LinkedIn profile. Example: `{}`
JSON object for the 8th work experience entry on the LinkedIn profile. Example: `{}`
JSON object for the 9th work experience entry on the LinkedIn profile. Example: `{}`
JSON object for the 10th work experience entry on the LinkedIn profile. Example: `{}`
Job title for the 1st work experience. Example: `Vice President of Business Strategy`
Description text for the 1st work experience
Location of the 1st work experience
Start year of the 1st work experience. Example: `2025`
Start month of the 1st work experience. Example: `9`
End year of the 1st work experience (null if current)
End month of the 1st work experience (null if current)
Company name for the 1st work experience. Example: `Cassidy Advertising & Consulting LLC`
LinkedIn URL of the company for the 1st work experience. Example: `https://www.linkedin.com/company/1620351/`
Logo URL of the company for the 1st work experience. Example: `https://media.licdn.com/dms/image/v2/C4E0BAQGNJvt99hfofA/company-logo_400_400/company-logo_400_400/0/1630579191372/cassidy_advertising__consulting_llc_logo?e=1775692800&v=beta&t=KDDsoQaD9Swq9jcjc27uPPZCez_CmDuWLMlhr5yuvSc`
Job title for the 2nd work experience. Example: `Investment Banking Associate`
Description text for the 2nd work experience
Location of the 2nd work experience
Start year of the 2nd work experience. Example: `2024`
Start month of the 2nd work experience. Example: `1`
End year of the 2nd work experience (null if current). Example: `2025`
End month of the 2nd work experience (null if current). Example: `8`
Company name for the 2nd work experience. Example: `MelCap Partners, LLC`
LinkedIn URL of the company for the 2nd work experience. Example: `https://www.linkedin.com/company/5562018/`
Logo URL of the company for the 2nd work experience. Example: `https://media.licdn.com/dms/image/v2/C4E0BAQHNzoXUJzRBmA/company-logo_400_400/company-logo_400_400/0/1631334371809?e=1775692800&v=beta&t=-Rj5v_dklXsykly2yPwy7xKK8j07MXRpqiiQeYzSLUM`
Job title for the 3rd work experience. Example: `Investment Banking Analyst`
Description text for the 3rd work experience
Location of the 3rd work experience
Start year of the 3rd work experience. Example: `2022`
Start month of the 3rd work experience. Example: `8`
End year of the 3rd work experience (null if current). Example: `2023`
End month of the 3rd work experience (null if current). Example: `12`
Company name for the 3rd work experience. Example: `MelCap Partners`
LinkedIn URL of the company for the 3rd work experience. Example: `https://www.linkedin.com/company/5562018/`
Logo URL of the company for the 3rd work experience. Example: `https://media.licdn.com/dms/image/v2/C4E0BAQHNzoXUJzRBmA/company-logo_400_400/company-logo_400_400/0/1631334371809?e=1775692800&v=beta&t=-Rj5v_dklXsykly2yPwy7xKK8j07MXRpqiiQeYzSLUM`
Job title for the 4th work experience. Example: `Audit Staff Accountant`
Description text for the 4th work experience
Location of the 4th work experience. Example: `Cleveland, Ohio, United States`
Start year of the 4th work experience. Example: `2020`
Start month of the 4th work experience. Example: `9`
End year of the 4th work experience (null if current). Example: `2022`
End month of the 4th work experience (null if current). Example: `8`
Company name for the 4th work experience. Example: `Marcum LLP`
LinkedIn URL of the company for the 4th work experience. Example: `https://www.linkedin.com/company/21984/`
Logo URL of the company for the 4th work experience. Example: `https://media.licdn.com/dms/image/v2/D4E0BAQHTKbL7_5S_kw/company-logo_400_400/company-logo_400_400/0/1730466042261/marcum_llp_logo?e=1775692800&v=beta&t=Uszcw8JZwdF_F8rdgJpYEMGhq64Pa5bih2ARS15bTO4`
Job title for the 4th work experience. Example: `Audit Staff Accountant`
Description text for the 4th work experience
Location of the 4th work experience. Example: `Cleveland, Ohio, United States`
Start year of the 4th work experience. Example: `2020`
Start month of the 4th work experience. Example: `9`
End year of the 4th work experience (null if current). Example: `2022`
End month of the 4th work experience (null if current). Example: `8`
Company name for the 4th work experience. Example: `Marcum LLP`
LinkedIn URL of the company for the 4th work experience. Example: `https://www.linkedin.com/company/21984/`
Logo URL of the company for the 4th work experience. Example: `https://media.licdn.com/dms/image/v2/D4E0BAQHTKbL7_5S_kw/company-logo_400_400/company-logo_400_400/0/1730466042261/marcum_llp_logo?e=1775692800&v=beta&t=Uszcw8JZwdF_F8rdgJpYEMGhq64Pa5bih2ARS15bTO4`
Job title for the 5th work experience. Example: `Graduate Student`
Description text for the 5th work experience. Example: `Masters of Science in Accountancy Class of 2020`
Location of the 5th work experience. Example: `South Bend, Indiana Area`
Start year of the 5th work experience. Example: `2019`
Start month of the 5th work experience. Example: `8`
End year of the 5th work experience (null if current). Example: `2020`
End month of the 5th work experience (null if current). Example: `5`
Company name for the 5th work experience. Example: `University of Notre Dame - Mendoza College of Business`
LinkedIn URL of the company for the 5th work experience. Example: `https://www.linkedin.com/company/15102069/`
Logo URL of the company for the 5th work experience. Example: `https://media.licdn.com/dms/image/v2/C4D0BAQGU6YLdAy1dTw/company-logo_400_400/company-logo_400_400/0/1630544558231/university_of_notre_dame___mendoza_college_of_business_logo?e=1775692800&v=beta&t=QQRvJBsKyL5p8rcdKApPyrMRHhgcrDivWuA1QsGvpJA`
Job title for the 6th work experience
Description text for the 6th work experience
Location of the 6th work experience
Start year of the 6th work experience
Start month of the 6th work experience
End year of the 6th work experience (null if current)
End month of the 6th work experience (null if current)
Company name for the 6th work experience
LinkedIn URL of the company for the 6th work experience
Logo URL of the company for the 6th work experience
Job title for the 7th work experience
Description text for the 7th work experience
Location of the 7th work experience
Start year of the 7th work experience
Start month of the 7th work experience
End year of the 7th work experience (null if current)
End month of the 7th work experience (null if current)
Company name for the 7th work experience
LinkedIn URL of the company for the 7th work experience
Logo URL of the company for the 7th work experience
Job title for the 8th work experience
Description text for the 8th work experience
Location of the 8th work experience
Start year of the 8th work experience
Start month of the 8th work experience
End year of the 8th work experience (null if current)
End month of the 8th work experience (null if current)
Company name for the 8th work experience
LinkedIn URL of the company for the 8th work experience
Logo URL of the company for the 8th work experience
Job title for the 9th work experience
Description text for the 9th work experience
Location of the 9th work experience
Start year of the 9th work experience
Start month of the 9th work experience
End year of the 9th work experience (null if current)
End month of the 9th work experience (null if current)
Company name for the 9th work experience
LinkedIn URL of the company for the 9th work experience
Logo URL of the company for the 9th work experience
Job title for the 10th work experience
Description text for the 10th work experience
Location of the 10th work experience
Start year of the 10th work experience
Start month of the 10th work experience
End year of the 10th work experience (null if current)
End month of the 10th work experience (null if current)
Company name for the 10th work experience
LinkedIn URL of the company for the 10th work experience
Logo URL of the company for the 10th work experience
JSON object for the 1st education entry on the LinkedIn profile. Example: `{'grade': None, 'end_year': 2015, 'activities': None, 'school_urn': 'urn:li:fsd_school:3185119', 'start_year': 2011, 'description': 'Varsity Football Team Captain', 'school_logo': 'https://media.licdn.com/dms/image/v2/C4E0BAQHxGZiajzHBHg/company-logo_400_400/company-logo_400_400/0/1631371114746/saint_ignatius_high_school_logo?e=1775692800&v=beta&t=p6mYmQOidWylws1rdca8euxkwEhPAMI-Rp2veaCuCbY', 'school_name': 'Saint Ignatius High School', 'field_of_study': ''}`
JSON object for the 2nd education entry on the LinkedIn profile. Example: `{'grade': None, 'end_year': 2020, 'activities': None, 'school_urn': 'urn:li:fsd_school:18367', 'start_year': 2019, 'description': None, 'school_logo': 'https://media.licdn.com/dms/image/v2/C4D0BAQGU6YLdAy1dTw/company-logo_400_400/company-logo_400_400/0/1630544558231/university_of_notre_dame___mendoza_college_of_business_logo?e=1775692800&v=beta&t=QQRvJBsKyL5p8rcdKApPyrMRHhgcrDivWuA1QsGvpJA', 'school_name': 'University of Notre Dame - Mendoza College of Business', 'field_of_study': 'Master of Science - MS, Accounting'}`
JSON object for the 3rd education entry on the LinkedIn profile. Example: `{'grade': None, 'end_year': 2019, 'activities': None, 'school_urn': 'urn:li:fsd_school:18771', 'start_year': 2015, 'description': 'Minors: Finance and Sport Management', 'school_logo': 'https://media.licdn.com/dms/image/v2/C4E0BAQEJmXnCQ8bRCQ/company-logo_400_400/company-logo_400_400/0/1631342299438?e=1775692800&v=beta&t=jfaD9Y6mPPF_b_eV4enhqur75TJyll9xFtWSBrsBfiY', 'school_name': 'Elon University', 'field_of_study': 'Bachelor of Science - BS, Accounting'}`
JSON object for the 4th education entry on the LinkedIn profile. Example: `{}`
JSON object for the 5th education entry on the LinkedIn profile. Example: `{}`
JSON object for the 6th education entry on the LinkedIn profile. Example: `{}`
JSON object for the 7th education entry on the LinkedIn profile. Example: `{}`
JSON object for the 8th education entry on the LinkedIn profile. Example: `{}`
JSON object for the 9th education entry on the LinkedIn profile. Example: `{}`
JSON object for the 10th education entry on the LinkedIn profile. Example: `{}`
LinkedIn companies this person follows. Example: `[{'company_id': '8450', 'company_url': 'https://www.linkedin.com/company/8450/', 'company_logo': 'https://media.licdn.com/dms/image/v2/C4E0BAQFV98UAyjaH7g/company-logo_200_200/company-logo_200_200/0/1668198003810/aicpa_logo?e=1775692800&v=beta&t=nzwdgDWFggL9e_IrnzlRQw2a04M9BnaFgYSh99B2dng', 'is_following': False, 'follower_count': 318176}, {'company_id': '412132', 'company_url': 'https://www.linkedin.com/company/412132/', 'company_logo': 'https://media.licdn.com/dms/image/v2/C4E0BAQHxGZiajzHBHg/company-logo_200_200/company-logo_200_200/0/1631371114746/saint_ignatius_high_school_logo?e=1775692800&v=beta&t=eYfT7qH5mXofSmzMiRRVY34mk7a9FzMgTn5pLJ26n38', 'is_following': False, 'follower_count': 7776}, {'company_id': '21984', 'company_url': 'https://www.linkedin.com/company/21984/', 'company_logo': 'https://media.licdn.com/dms/image/v2/D4E0BAQHTKbL7_5S_kw/company-logo_200_200/company-logo_200_200/0/1730466042261/marcum_llp_logo?e=1775692800&v=beta&t=nziUMRa2SmWy96tSFeNpG-pZXegSYPE8DvIpMHPp35s', 'is_following': False, 'follower_count': 50065}]`
LinkedIn groups this person is a member of. Example: `[{'group_id': '12068263', 'group_url': 'https://www.linkedin.com/groups/12068263/', 'group_logo': 'https://media.licdn.com/dms/image/v2/C4E07AQGGOVB8anAuQQ/group-logo_image-shrink_200x200/group-logo_image-shrink_200x200/0/1631001642624?e=1774551600&v=beta&t=wpXl75yxrLXA8drFPHyA81pPgEooE3KGSfxo7Mlkj9U', 'group_name': "Elon University's Beta Alpha Psi Chapter"}, {'group_id': '61715', 'group_url': 'https://www.linkedin.com/groups/61715/', 'group_logo': 'https://media.licdn.com/dms/image/v2/C4D07AQGRy12-ZPhupw/group-logo_image-shrink_200x200/group-logo_image-shrink_200x200/0/1631357469421?e=1774551600&v=beta&t=PN4CDsrFH7G43QPlxO9A3mVHcJ2lM9BTDK8f-V2Q5UE', 'group_name': 'Ignatius Men Forever - Saint Ignatius High School, Cleveland'}]`
1st featured content item pinned on the LinkedIn profile. Example: `{'text': "I'm thrilled to be joining the executive team at Cassidy Advertising & Consulting LLC alongside Laura Berena and Hailey Cassidy. After 5+ years of helping middle-market companies with strategic financial services, I'm looking forward to bringing that experience into a new industry.", 'post_url': 'https://www.linkedin.com/feed/update/urn:li:activity:7379139520778321921?updateEntityUrn=urn%3Ali%3Afs_feedUpdate%3A%28V2%2Curn%3Ali%3Aactivity%3A7379139520778321921%29', 'post_urn': 'urn:li:activity:7379139520778321921', 'num_likes': 157, 'num_comments': 27}`
2nd featured content item pinned on the LinkedIn profile. Example: `{}`
3rd featured content item pinned on the LinkedIn profile. Example: `{}`
4th featured content item pinned on the LinkedIn profile. Example: `{}`
5th featured content item pinned on the LinkedIn profile. Example: `{}`
Full work experience history as a JSON array. Example: `[{'title': 'Vice President of Business Strategy', 'description': None, 'location': None, 'start_year': 2025, 'start_month': 9, 'end_year': None, 'end_month': None, 'company_name': 'Cassidy Advertising & Consulting LLC', 'company_url': 'https://www.linkedin.com/company/1620351/', 'company_logo': 'https://media.licdn.com/dms/image/v2/C4E0BAQGNJvt99hfofA/company-logo_400_400/company-logo_400_400/0/1630579191372/cassidy_advertising__consulting_llc_logo?e=1775692800&v=beta&t=KDDsoQaD9Swq9jcjc27uPPZCez_CmDuWLMlhr5yuvSc'}, {'title': 'Investment Banking Associate', 'description': None, 'location': None, 'start_year': 2024, 'start_month': 1, 'end_year': 2025, 'end_month': 8, 'company_name': 'MelCap Partners, LLC', 'company_url': 'https://www.linkedin.com/company/5562018/', 'company_logo': 'https://media.licdn.com/dms/image/v2/C4E0BAQHNzoXUJzRBmA/company-logo_400_400/company-logo_400_400/0/1631334371809?e=1775692800&v=beta&t=-Rj5v_dklXsykly2yPwy7xKK8j07MXRpqiiQeYzSLUM'}, {'title': 'Investment Banking Analyst', 'description': None, 'location': None, 'start_year': 2022, 'start_month': 8, 'end_year': 2023, 'end_month': 12, 'company_name': 'MelCap Partners', 'company_url': 'https://www.linkedin.com/company/5562018/', 'company_logo': 'https://media.licdn.com/dms/image/v2/C4E0BAQHNzoXUJzRBmA/company-logo_400_400/company-logo_400_400/0/1631334371809?e=1775692800&v=beta&t=-Rj5v_dklXsykly2yPwy7xKK8j07MXRpqiiQeYzSLUM'}, {'title': 'Audit Staff Accountant', 'description': None, 'location': 'Cleveland, Ohio, United States', 'start_year': 2020, 'start_month': 9, 'end_year': 2022, 'end_month': 8, 'company_name': 'Marcum LLP', 'company_url': 'https://www.linkedin.com/company/21984/', 'company_logo': 'https://media.licdn.com/dms/image/v2/D4E0BAQHTKbL7_5S_kw/company-logo_400_400/company-logo_400_400/0/1730466042261/marcum_llp_logo?e=1775692800&v=beta&t=Uszcw8JZwdF_F8rdgJpYEMGhq64Pa5bih2ARS15bTO4'}, {'title': 'Graduate Student', 'description': 'Masters of Science in Accountancy Class of 2020', 'location': 'South Bend, Indiana Area', 'start_year': 2019, 'start_month': 8, 'end_year': 2020, 'end_month': 5, 'company_name': 'University of Notre Dame - Mendoza College of Business', 'company_url': 'https://www.linkedin.com/company/15102069/', 'company_logo': 'https://media.licdn.com/dms/image/v2/C4D0BAQGU6YLdAy1dTw/company-logo_400_400/company-logo_400_400/0/1630544558231/university_of_notre_dame___mendoza_college_of_business_logo?e=1775692800&v=beta&t=QQRvJBsKyL5p8rcdKApPyrMRHhgcrDivWuA1QsGvpJA'}]`
Full education history as a JSON array. Example: `[{'school_name': 'Saint Ignatius High School', 'field_of_study': '', 'start_year': 2011, 'end_year': 2015, 'activities': None, 'grade': None, 'school_urn': 'urn:li:fsd_school:3185119', 'school_logo': 'https://media.licdn.com/dms/image/v2/C4E0BAQHxGZiajzHBHg/company-logo_400_400/company-logo_400_400/0/1631371114746/saint_ignatius_high_school_logo?e=1775692800&v=beta&t=p6mYmQOidWylws1rdca8euxkwEhPAMI-Rp2veaCuCbY'}, {'school_name': 'University of Notre Dame - Mendoza College of Business', 'field_of_study': 'Master of Science - MS, Accounting', 'start_year': 2019, 'end_year': 2020, 'activities': None, 'grade': None, 'school_urn': 'urn:li:fsd_school:18367', 'school_logo': 'https://media.licdn.com/dms/image/v2/C4D0BAQGU6YLdAy1dTw/company-logo_400_400/company-logo_400_400/0/1630544558231/university_of_notre_dame___mendoza_college_of_business_logo?e=1775692800&v=beta&t=QQRvJBsKyL5p8rcdKApPyrMRHhgcrDivWuA1QsGvpJA'}, {'school_name': 'Elon University', 'field_of_study': 'Bachelor of Science - BS, Accounting', 'start_year': 2015, 'end_year': 2019, 'activities': None, 'grade': None, 'school_urn': 'urn:li:fsd_school:18771', 'school_logo': 'https://media.licdn.com/dms/image/v2/C4E0BAQEJmXnCQ8bRCQ/company-logo_400_400/company-logo_400_400/0/1631342299438?e=1775692800&v=beta&t=jfaD9Y6mPPF_b_eV4enhqur75TJyll9xFtWSBrsBfiY'}]`
Additional enrichment functions enabled for this record. Example: `[]`
Timestamp when this LinkedIn profile was scraped. Example: `2025-07-01T12:00:00Z`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 88751,
"object": "result",
"squid": "2df91f8a7923f6e4f620d78357fe92aa",
"run": "68ff47d749e9e15917fc81691a092f78",
"url": "https://www.linkedin.com/in/david-shibley",
"public_identifier": "david-shibley",
"first_name": "David",
"last_name": "Shibley",
"full_name": "David Shibley",
"email": "dave@melcap.com",
"email_status": "valid",
"headline": "Vice President of Business Strategy at Cassidy Advertising",
"description": "With over 5 years of professional client services experience, currently serving as Vice President of Business Strategy at Cassidy Advertising & Consulting, contributing to strategic planning and client engagement. Committed to fostering collaborative growth and aligning strategies to advance organizational goals. Past roles as Investment Banking Associate and Staff Accountant honed expertise in financial data analysis, reporting, and deal structuring. Skilled in business strategy, client relations, and leveraging insights and analytics for impactful outcomes.",
"location": "Cleveland, Ohio, United States",
"industry": "Marketing & Advertising",
"vmid": "ACoAABBSYCEB2RG5DGmF2FHaW3QIGLMpHLChBRc",
"sales_nav_url": "https://www.linkedin.com/sales/people/ACoAABBSYCEB2RG5DGmF2FHaW3QIGLMpHLChBRc",
"connection_degree": "3",
"connections_url": "https://www.linkedin.com/search/results/people/?facetConnectionOf=%5B%22ACoAABBSYCEB2RG5DGmF2FHaW3QIGLMpHLChBRc%22%5D&facetNetwork=%5B%22F%22%2C%22S%22%5D&origin=MEMBER_PROFILE_CANNED_SEARCH",
"mutual_connections_url": "https://www.linkedin.com/search/results/people/?facetNetwork=%5B%22F%22%5D&facetConnectionOf=%5B%22ACoAABBSYCEB2RG5DGmF2FHaW3QIGLMpHLChBRc%22%5D&origin=MEMBER_PROFILE_CANNED_SEARCH&RESULT_TYPE=PEOPLE",
"mutual_connections_text": "0 mutual connections",
"picture_url": "https://media.licdn.com/dms/image/v2/D5603AQFQQKystZJSAA/profile-displayphoto-scale_400_400/B56ZmfjYy4JkAk-/0/1759318479293?e=1775692800&v=beta&t=SAzzG76z7sunESZpozYWL5uc-nAg4BMMDjfUwIIXtAk",
"background_picture_url": "https://media.licdn.com/dms/image/v2/D4D16AQFV1Mlvp-78Uw/profile-displaybackgroundimage-shrink_200_800/B4DZm_ItgpGkAU-/0/1759848357816?e=1775692800&v=beta&t=Ix85xp8Ly5B8H6R94ZCMU_T9WAkTxkZJmeyRacB9GGk",
"is_creator": "False",
"open_to_work": false,
"num_connections": 1344,
"num_followers": 1348,
"skills": [
"Microsoft Excel",
"Event Planning",
"Public Speaking",
"PowerPoint",
"Leadership",
"Microsoft PowerPoint",
"Social Media",
"Microsoft Office",
"Microsoft Word",
"Customer Service",
"Management",
"Strategic Planning"
],
"job_1": {
"title": "Vice President of Business Strategy",
"end_year": null,
"location": null,
"end_month": null,
"start_year": 2025,
"company_url": "https://www.linkedin.com/company/1620351/",
"description": null,
"start_month": 9,
"company_logo": "https://media.licdn.com/dms/image/v2/C4E0BAQGNJvt99hfofA/company-logo_400_400/company-logo_400_400/0/1630579191372/cassidy_advertising__consulting_llc_logo?e=1775692800&v=beta&t=KDDsoQaD9Swq9jcjc27uPPZCez_CmDuWLMlhr5yuvSc",
"company_name": "Cassidy Advertising & Consulting LLC"
},
"job_2": {
"title": "Investment Banking Associate",
"end_year": 2025,
"location": null,
"end_month": 8,
"start_year": 2024,
"company_url": "https://www.linkedin.com/company/5562018/",
"description": null,
"start_month": 1,
"company_logo": "https://media.licdn.com/dms/image/v2/C4E0BAQHNzoXUJzRBmA/company-logo_400_400/company-logo_400_400/0/1631334371809?e=1775692800&v=beta&t=-Rj5v_dklXsykly2yPwy7xKK8j07MXRpqiiQeYzSLUM",
"company_name": "MelCap Partners, LLC"
},
"job_3": {
"title": "Investment Banking Analyst",
"end_year": 2023,
"location": null,
"end_month": 12,
"start_year": 2022,
"company_url": "https://www.linkedin.com/company/5562018/",
"description": null,
"start_month": 8,
"company_logo": "https://media.licdn.com/dms/image/v2/C4E0BAQHNzoXUJzRBmA/company-logo_400_400/company-logo_400_400/0/1631334371809?e=1775692800&v=beta&t=-Rj5v_dklXsykly2yPwy7xKK8j07MXRpqiiQeYzSLUM",
"company_name": "MelCap Partners"
},
"job_4": {
"title": "Audit Staff Accountant",
"end_year": 2022,
"location": "Cleveland, Ohio, United States",
"end_month": 8,
"start_year": 2020,
"company_url": "https://www.linkedin.com/company/21984/",
"description": null,
"start_month": 9,
"company_logo": "https://media.licdn.com/dms/image/v2/D4E0BAQHTKbL7_5S_kw/company-logo_400_400/company-logo_400_400/0/1730466042261/marcum_llp_logo?e=1775692800&v=beta&t=Uszcw8JZwdF_F8rdgJpYEMGhq64Pa5bih2ARS15bTO4",
"company_name": "Marcum LLP"
},
"job_5": {
"title": "Graduate Student",
"end_year": 2020,
"location": "South Bend, Indiana Area",
"end_month": 5,
"start_year": 2019,
"company_url": "https://www.linkedin.com/company/15102069/",
"description": "Masters of Science in Accountancy Class of 2020",
"start_month": 8,
"company_logo": "https://media.licdn.com/dms/image/v2/C4D0BAQGU6YLdAy1dTw/company-logo_400_400/company-logo_400_400/0/1630544558231/university_of_notre_dame___mendoza_college_of_business_logo?e=1775692800&v=beta&t=QQRvJBsKyL5p8rcdKApPyrMRHhgcrDivWuA1QsGvpJA",
"company_name": "University of Notre Dame - Mendoza College of Business"
},
"job_6": {},
"job_7": {},
"job_8": {},
"job_9": {},
"job_10": {},
"job_1_title": "Vice President of Business Strategy",
"job_1_description": "",
"job_1_location": "",
"job_1_start_year": 2025,
"job_1_start_month": 9,
"job_1_end_year": null,
"job_1_end_month": null,
"job_1_company_name": "Cassidy Advertising & Consulting LLC",
"job_1_company_url": "https://www.linkedin.com/company/1620351/",
"job_1_company_logo": "https://media.licdn.com/dms/image/v2/C4E0BAQGNJvt99hfofA/company-logo_400_400/company-logo_400_400/0/1630579191372/cassidy_advertising__consulting_llc_logo?e=1775692800&v=beta&t=KDDsoQaD9Swq9jcjc27uPPZCez_CmDuWLMlhr5yuvSc",
"job_2_title": "Investment Banking Associate",
"job_2_description": "",
"job_2_location": "",
"job_2_start_year": 2024,
"job_2_start_month": 1,
"job_2_end_year": 2025,
"job_2_end_month": 8,
"job_2_company_name": "MelCap Partners, LLC",
"job_2_company_url": "https://www.linkedin.com/company/5562018/",
"job_2_company_logo": "https://media.licdn.com/dms/image/v2/C4E0BAQHNzoXUJzRBmA/company-logo_400_400/company-logo_400_400/0/1631334371809?e=1775692800&v=beta&t=-Rj5v_dklXsykly2yPwy7xKK8j07MXRpqiiQeYzSLUM",
"job_3_title": "Investment Banking Analyst",
"job_3_description": "",
"job_3_location": "",
"job_3_start_year": 2022,
"job_3_start_month": 8,
"job_3_end_year": 2023,
"job_3_end_month": 12,
"job_3_company_name": "MelCap Partners",
"job_3_company_url": "https://www.linkedin.com/company/5562018/",
"job_3_company_logo": "https://media.licdn.com/dms/image/v2/C4E0BAQHNzoXUJzRBmA/company-logo_400_400/company-logo_400_400/0/1631334371809?e=1775692800&v=beta&t=-Rj5v_dklXsykly2yPwy7xKK8j07MXRpqiiQeYzSLUM",
"job_4_title": "Audit Staff Accountant",
"job_4_description": null,
"job_4_location": "Cleveland, Ohio, United States",
"job_4_start_year": 2020,
"job_4_start_month": 9,
"job_4_end_year": 2022,
"job_4_end_month": 8,
"job_4_company_name": "Marcum LLP",
"job_4_company_url": "https://www.linkedin.com/company/21984/",
"job_4_company_logo": "https://media.licdn.com/dms/image/v2/D4E0BAQHTKbL7_5S_kw/company-logo_400_400/company-logo_400_400/0/1730466042261/marcum_llp_logo?e=1775692800&v=beta&t=Uszcw8JZwdF_F8rdgJpYEMGhq64Pa5bih2ARS15bTO4",
"job_5_title": "Graduate Student",
"job_5_description": "Masters of Science in Accountancy Class of 2020",
"job_5_location": "South Bend, Indiana Area",
"job_5_start_year": 2019,
"job_5_start_month": 8,
"job_5_end_year": 2020,
"job_5_end_month": 5,
"job_5_company_name": "University of Notre Dame - Mendoza College of Business",
"job_5_company_url": "https://www.linkedin.com/company/15102069/",
"job_5_company_logo": "https://media.licdn.com/dms/image/v2/C4D0BAQGU6YLdAy1dTw/company-logo_400_400/company-logo_400_400/0/1630544558231/university_of_notre_dame___mendoza_college_of_business_logo?e=1775692800&v=beta&t=QQRvJBsKyL5p8rcdKApPyrMRHhgcrDivWuA1QsGvpJA",
"job_6_title": null,
"job_6_description": null,
"job_6_location": null,
"job_6_start_year": null,
"job_6_start_month": null,
"job_6_end_year": null,
"job_6_end_month": null,
"job_6_company_name": null,
"job_6_company_url": null,
"job_6_company_logo": null,
"job_7_title": null,
"job_7_description": null,
"job_7_location": null,
"job_7_start_year": null,
"job_7_start_month": null,
"job_7_end_year": null,
"job_7_end_month": null,
"job_7_company_name": null,
"job_7_company_url": null,
"job_7_company_logo": null,
"job_8_title": null,
"job_8_description": null,
"job_8_location": null,
"job_8_start_year": null,
"job_8_start_month": null,
"job_8_end_year": null,
"job_8_end_month": null,
"job_8_company_name": null,
"job_8_company_url": null,
"job_8_company_logo": null,
"job_9_title": null,
"job_9_description": null,
"job_9_location": null,
"job_9_start_year": null,
"job_9_start_month": null,
"job_9_end_year": null,
"job_9_end_month": null,
"job_9_company_name": null,
"job_9_company_url": null,
"job_9_company_logo": null,
"job_10_title": null,
"job_10_description": null,
"job_10_location": null,
"job_10_start_year": null,
"job_10_start_month": null,
"job_10_end_year": null,
"job_10_end_month": null,
"job_10_company_name": null,
"job_10_company_url": null,
"job_10_company_logo": null,
"education_1": {
"grade": null,
"end_year": 2015,
"activities": null,
"school_urn": "urn:li:fsd_school:3185119",
"start_year": 2011,
"description": "Varsity Football Team Captain",
"school_logo": "https://media.licdn.com/dms/image/v2/C4E0BAQHxGZiajzHBHg/company-logo_400_400/company-logo_400_400/0/1631371114746/saint_ignatius_high_school_logo?e=1775692800&v=beta&t=p6mYmQOidWylws1rdca8euxkwEhPAMI-Rp2veaCuCbY",
"school_name": "Saint Ignatius High School",
"field_of_study": ""
},
"education_2": {
"grade": null,
"end_year": 2020,
"activities": null,
"school_urn": "urn:li:fsd_school:18367",
"start_year": 2019,
"description": null,
"school_logo": "https://media.licdn.com/dms/image/v2/C4D0BAQGU6YLdAy1dTw/company-logo_400_400/company-logo_400_400/0/1630544558231/university_of_notre_dame___mendoza_college_of_business_logo?e=1775692800&v=beta&t=QQRvJBsKyL5p8rcdKApPyrMRHhgcrDivWuA1QsGvpJA",
"school_name": "University of Notre Dame - Mendoza College of Business",
"field_of_study": "Master of Science - MS, Accounting"
},
"education_3": {
"grade": null,
"end_year": 2019,
"activities": null,
"school_urn": "urn:li:fsd_school:18771",
"start_year": 2015,
"description": "Minors: Finance and Sport Management",
"school_logo": "https://media.licdn.com/dms/image/v2/C4E0BAQEJmXnCQ8bRCQ/company-logo_400_400/company-logo_400_400/0/1631342299438?e=1775692800&v=beta&t=jfaD9Y6mPPF_b_eV4enhqur75TJyll9xFtWSBrsBfiY",
"school_name": "Elon University",
"field_of_study": "Bachelor of Science - BS, Accounting"
},
"education_4": {},
"education_5": {},
"education_6": {},
"education_7": {},
"education_8": {},
"education_9": {},
"education_10": {},
"interests_companies": [
{
"company_id": "8450",
"company_url": "https://www.linkedin.com/company/8450/",
"company_logo": "https://media.licdn.com/dms/image/v2/C4E0BAQFV98UAyjaH7g/company-logo_200_200/company-logo_200_200/0/1668198003810/aicpa_logo?e=1775692800&v=beta&t=nzwdgDWFggL9e_IrnzlRQw2a04M9BnaFgYSh99B2dng",
"is_following": false,
"follower_count": 318176
},
{
"company_id": "412132",
"company_url": "https://www.linkedin.com/company/412132/",
"company_logo": "https://media.licdn.com/dms/image/v2/C4E0BAQHxGZiajzHBHg/company-logo_200_200/company-logo_200_200/0/1631371114746/saint_ignatius_high_school_logo?e=1775692800&v=beta&t=eYfT7qH5mXofSmzMiRRVY34mk7a9FzMgTn5pLJ26n38",
"is_following": false,
"follower_count": 7776
},
{
"company_id": "21984",
"company_url": "https://www.linkedin.com/company/21984/",
"company_logo": "https://media.licdn.com/dms/image/v2/D4E0BAQHTKbL7_5S_kw/company-logo_200_200/company-logo_200_200/0/1730466042261/marcum_llp_logo?e=1775692800&v=beta&t=nziUMRa2SmWy96tSFeNpG-pZXegSYPE8DvIpMHPp35s",
"is_following": false,
"follower_count": 50065
}
],
"interests_groups": [
{
"group_id": "12068263",
"group_url": "https://www.linkedin.com/groups/12068263/",
"group_logo": "https://media.licdn.com/dms/image/v2/C4E07AQGGOVB8anAuQQ/group-logo_image-shrink_200x200/group-logo_image-shrink_200x200/0/1631001642624?e=1774551600&v=beta&t=wpXl75yxrLXA8drFPHyA81pPgEooE3KGSfxo7Mlkj9U",
"group_name": "Elon University's Beta Alpha Psi Chapter"
},
{
"group_id": "61715",
"group_url": "https://www.linkedin.com/groups/61715/",
"group_logo": "https://media.licdn.com/dms/image/v2/C4D07AQGRy12-ZPhupw/group-logo_image-shrink_200x200/group-logo_image-shrink_200x200/0/1631357469421?e=1774551600&v=beta&t=PN4CDsrFH7G43QPlxO9A3mVHcJ2lM9BTDK8f-V2Q5UE",
"group_name": "Ignatius Men Forever - Saint Ignatius High School, Cleveland"
}
],
"featured_1": {
"text": "I'm thrilled to be joining the executive team at Cassidy Advertising & Consulting LLC alongside Laura Berena and Hailey Cassidy. After 5+ years of helping middle-market companies with strategic financial services, I'm looking forward to bringing that experience into a new industry.",
"post_url": "https://www.linkedin.com/feed/update/urn:li:activity:7379139520778321921?updateEntityUrn=urn%3Ali%3Afs_feedUpdate%3A%28V2%2Curn%3Ali%3Aactivity%3A7379139520778321921%29",
"post_urn": "urn:li:activity:7379139520778321921",
"num_likes": 157,
"num_comments": 27
},
"featured_2": {},
"featured_3": {},
"featured_4": {},
"featured_5": {},
"jobs": [
{
"title": "Vice President of Business Strategy",
"description": null,
"location": null,
"start_year": 2025,
"start_month": 9,
"end_year": null,
"end_month": null,
"company_name": "Cassidy Advertising & Consulting LLC",
"company_url": "https://www.linkedin.com/company/1620351/",
"company_logo": "https://media.licdn.com/dms/image/v2/C4E0BAQGNJvt99hfofA/company-logo_400_400/company-logo_400_400/0/1630579191372/cassidy_advertising__consulting_llc_logo?e=1775692800&v=beta&t=KDDsoQaD9Swq9jcjc27uPPZCez_CmDuWLMlhr5yuvSc"
},
{
"title": "Investment Banking Associate",
"description": null,
"location": null,
"start_year": 2024,
"start_month": 1,
"end_year": 2025,
"end_month": 8,
"company_name": "MelCap Partners, LLC",
"company_url": "https://www.linkedin.com/company/5562018/",
"company_logo": "https://media.licdn.com/dms/image/v2/C4E0BAQHNzoXUJzRBmA/company-logo_400_400/company-logo_400_400/0/1631334371809?e=1775692800&v=beta&t=-Rj5v_dklXsykly2yPwy7xKK8j07MXRpqiiQeYzSLUM"
},
{
"title": "Investment Banking Analyst",
"description": null,
"location": null,
"start_year": 2022,
"start_month": 8,
"end_year": 2023,
"end_month": 12,
"company_name": "MelCap Partners",
"company_url": "https://www.linkedin.com/company/5562018/",
"company_logo": "https://media.licdn.com/dms/image/v2/C4E0BAQHNzoXUJzRBmA/company-logo_400_400/company-logo_400_400/0/1631334371809?e=1775692800&v=beta&t=-Rj5v_dklXsykly2yPwy7xKK8j07MXRpqiiQeYzSLUM"
},
{
"title": "Audit Staff Accountant",
"description": null,
"location": "Cleveland, Ohio, United States",
"start_year": 2020,
"start_month": 9,
"end_year": 2022,
"end_month": 8,
"company_name": "Marcum LLP",
"company_url": "https://www.linkedin.com/company/21984/",
"company_logo": "https://media.licdn.com/dms/image/v2/D4E0BAQHTKbL7_5S_kw/company-logo_400_400/company-logo_400_400/0/1730466042261/marcum_llp_logo?e=1775692800&v=beta&t=Uszcw8JZwdF_F8rdgJpYEMGhq64Pa5bih2ARS15bTO4"
},
{
"title": "Graduate Student",
"description": "Masters of Science in Accountancy Class of 2020",
"location": "South Bend, Indiana Area",
"start_year": 2019,
"start_month": 8,
"end_year": 2020,
"end_month": 5,
"company_name": "University of Notre Dame - Mendoza College of Business",
"company_url": "https://www.linkedin.com/company/15102069/",
"company_logo": "https://media.licdn.com/dms/image/v2/C4D0BAQGU6YLdAy1dTw/company-logo_400_400/company-logo_400_400/0/1630544558231/university_of_notre_dame___mendoza_college_of_business_logo?e=1775692800&v=beta&t=QQRvJBsKyL5p8rcdKApPyrMRHhgcrDivWuA1QsGvpJA"
}
],
"educations": [
{
"school_name": "Saint Ignatius High School",
"field_of_study": "",
"start_year": 2011,
"end_year": 2015,
"activities": null,
"grade": null,
"school_urn": "urn:li:fsd_school:3185119",
"school_logo": "https://media.licdn.com/dms/image/v2/C4E0BAQHxGZiajzHBHg/company-logo_400_400/company-logo_400_400/0/1631371114746/saint_ignatius_high_school_logo?e=1775692800&v=beta&t=p6mYmQOidWylws1rdca8euxkwEhPAMI-Rp2veaCuCbY"
},
{
"school_name": "University of Notre Dame - Mendoza College of Business",
"field_of_study": "Master of Science - MS, Accounting",
"start_year": 2019,
"end_year": 2020,
"activities": null,
"grade": null,
"school_urn": "urn:li:fsd_school:18367",
"school_logo": "https://media.licdn.com/dms/image/v2/C4D0BAQGU6YLdAy1dTw/company-logo_400_400/company-logo_400_400/0/1630544558231/university_of_notre_dame___mendoza_college_of_business_logo?e=1775692800&v=beta&t=QQRvJBsKyL5p8rcdKApPyrMRHhgcrDivWuA1QsGvpJA"
},
{
"school_name": "Elon University",
"field_of_study": "Bachelor of Science - BS, Accounting",
"start_year": 2015,
"end_year": 2019,
"activities": null,
"grade": null,
"school_urn": "urn:li:fsd_school:18771",
"school_logo": "https://media.licdn.com/dms/image/v2/C4E0BAQEJmXnCQ8bRCQ/company-logo_400_400/company-logo_400_400/0/1631342299438?e=1775692800&v=beta&t=jfaD9Y6mPPF_b_eV4enhqur75TJyll9xFtWSBrsBfiY"
}
],
"functions": null,
"scraping_time": "2025-07-01T12:00:00Z",
"native_id": 88751
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/linkedin-profile-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the LinkedIn Profile Scraper settings including email enrichment
Configure your LinkedIn Profile Scraper squid settings. The main configurable option is email enrichment, which uses lobstr.io's enrichment service to find email addresses for the profiles you scrape.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **email\_enrichment** | boolean | true | Enable email enrichment to find email addresses for profiles (9 credits per profile where an email is found) |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
## Email Enrichment
When email enrichment is enabled, lobstr.io will attempt to find the email address associated with each LinkedIn profile.
**Pricing:** 9 credits per profile enriched. No email found = 0 credits charged.
The enrichment service returns:
* `email`: The discovered email address (if found)
* `email_status`: Validation status of the email (valid, invalid, catch-all, etc.)
Email enrichment is enabled by default. Disable it before running if you don't need email data to avoid unexpected credit usage.
If you don't need email addresses, disable enrichment to reduce costs: set `email_enrichment` to `false`.
**Backward compatibility:** The old function name `email` is still accepted but deprecated. Migrate to `email_enrichment`.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "LinkedIn Profile Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"email_enrichment": true
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Update scraper settings
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "LinkedIn Profile Scraper (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"email_enrichment": True # 9 credits per profile with email found
}
}
)
data = response.json()
print(f"Settings updated: {data['name']}")
print(f"Email enrichment: {data['params']['email_enrichment']}")
```
## Response
```json 201 theme={null}
{
"name": "LinkedIn Profile Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"email_enrichment": true
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/linkedin-search-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your LinkedIn Search Scraper squid
Add search URLs to your **LinkedIn Search Scraper** squid.
Crawler ID: `0424cc372bc39cd81341b4a800203525`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
A LinkedIn search results URL: people (`https://www.linkedin.com/search/results/people/?keywords=...`), companies (`.../search/results/companies/?keywords=...`) or posts (`.../search/results/content/?keywords=...`). Filters already present in the pasted URL are kept and applied. LinkedIn caps every search at about 1,000 results — use several searches to slice a bigger query.
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.linkedin.com/search/results/people/?keywords=software%20engineer"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.linkedin.com/search/results/people/?keywords=software%20engineer"}
],
},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.linkedin.com/search/results/people/?keywords=software%20engineer"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/linkedin-search-scraper/credit-cost
Credit cost for the LinkedIn Search Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export LinkedIn Search Results | 1 | 1 credit per row (person, company or post). |
| Profile Details | 1 | 1 extra credit per profile when `profile_details` is enabled on a people search. |
| Company Details | 1 | 1 extra credit per company when `company_details` is enabled on a company search. |
| Post Engagement | 1 | 1 extra credit per post when `post_engagement` is enabled on a post search. |
LinkedIn caps every search at about 1,000 results. Use filters or several searches to slice a bigger query.
# Get Results
Source: https://docs.lobstr.io/examples/linkedin-search-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from LinkedIn Search Scraper
Retrieve scraped data from your **LinkedIn Search Scraper** runs. Three row types share the same table, one per search: `person`, `company`, `post`. Fields marked "people rows", "company rows" or "post rows" are left empty on the other types.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`.
## Query Parameters
Hash of the squid to get results from.
Page number (default: 1).
## Result Fields
### Common
Type of row: `person`, `company` or `post`, following the LinkedIn search that was given as input.
Stable LinkedIn id of the row, prefixed by its type so people, companies and posts never collide: `person:{member id or public identifier}`, `company:{company id or universal name}`, `post:{activity id}`.
The LinkedIn search URL that was given as task input and produced this row.
Keywords actually sent to LinkedIn for this search.
Location as displayed on the search card: member location for people rows, headquarters city for company rows.
Whether LinkedIn displays the verified badge on the person or the company.
Follower count exactly as written on the search card, free text (e.g. `35K followers`). Filled on company rows, and on people rows where LinkedIn shows the social proof line (roughly a quarter of them, rounded).
### People rows
LinkedIn internal member id of the profile.
Public profile slug used in the profile URL.
Direct URL to the LinkedIn profile.
Full name of the person as displayed by LinkedIn.
First name, split from the full name on the first space.
Last name, split from the full name on the first space.
Profile headline, free text as written by the member.
URL of the profile picture, empty when the member has none.
Connection degree between the connected LinkedIn account and the person (`1st`, `2nd`, `3rd+`).
Whether LinkedIn displays the premium badge on the person.
Whether LinkedIn shows the Open To Work badge for this person. Read for free from every people search row; the Profile Details add-on can also confirm it from the profile page.
About section of the profile. Filled by the Profile Details add-on.
Current job title and company. Filled by the Profile Details add-on.
Whether the profile is in LinkedIn creator mode. Filled by the Profile Details add-on.
Cover photo of the profile. Filled by the Profile Details add-on.
Work experience entries. Filled by the Profile Details add-on.
Education entries. Filled by the Profile Details add-on.
Skills listed on the profile. Filled by the Profile Details add-on.
### Company rows
Numeric LinkedIn id of the company.
Slug of the company LinkedIn page.
URL of the company LinkedIn page.
Name of the company as displayed by LinkedIn.
URL of the company logo.
Industry line shown on the company search card, and the company page industry when the Company Details add-on is on.
Employee count exactly as written on the company search card, free text (e.g. `10,001+ employees`).
Short description shown on the company search card.
Company website. Filled by the Company Details add-on.
Company tagline. Filled by the Company Details add-on.
Full About text of the company page. Filled by the Company Details add-on.
Year the company was founded. Filled by the Company Details add-on.
Number of employees LinkedIn associates with the company page. Filled by the Company Details add-on.
Number of followers, as an integer. Filled by the Company Details add-on for companies, and on a people row only when the search card shows an exact, unrounded number.
Company size range as written by LinkedIn (e.g. `5,001-10,000 employees`). Filled by the Company Details add-on.
Company type (`Privately Held`, `Public Company`...). Filled by the Company Details add-on.
Headquarters as written on the company page. Filled by the Company Details add-on.
Headquarters street address. Filled by the Company Details add-on.
Headquarters city. Filled by the Company Details add-on.
Headquarters region or state. Filled by the Company Details add-on.
Headquarters postal code. Filled by the Company Details add-on.
Headquarters country. Filled by the Company Details add-on.
Phone number published on the company page. Filled by the Company Details add-on.
Cover image of the company page. Filled by the Company Details add-on.
Offices listed on the company page. Filled by the Company Details add-on.
Specialties listed on the company page. Filled by the Company Details add-on.
Similar company pages suggested by LinkedIn. Filled by the Company Details add-on.
Showcase pages of the company. Filled by the Company Details add-on.
Affiliated pages of the company. Filled by the Company Details add-on.
Products listed on the company page. Filled by the Company Details add-on.
### Post rows
LinkedIn activity id of the post.
Permalink of the post.
Pretty share URL of the post, as used by the LinkedIn share button.
Full text of the post.
Publication date and time of the post in UTC, decoded from its LinkedIn activity id.
Name of the post author, person or company.
Public slug of the post author.
LinkedIn URL of the post author.
Headline of the post author as shown above the post.
Profile picture of the post author.
Whether the post author is a `person` or a `company`.
Images attached to the post.
Number of reposts of the post. Read from the post card when greater than zero, refreshed by the Post Engagement add-on.
Number of reactions on the post. Filled by the Post Engagement add-on.
Number of comments on the post. Filled by the Post Engagement add-on.
## Code Examples
```bash cURL theme={null}
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=YOUR_SQUID_HASH" \
-d "page=1"
```
```python Python theme={null}
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "YOUR_SQUID_HASH", "page": 1},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"record_type": "person", "record_id": "person:ACoAACrQ6T4BqCXCOj_ofEXvV9FS46fRs4o2I6o", "profile_url": "https://www.linkedin.com/in/nada-adel-mohamady", "full_name": "Nada Adel", "headline": "Software Engineer @ Microsoft", "location": "Egypt", "connection_degree": "3rd+", "search_keywords": "software engineer"}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/linkedin-search-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure LinkedIn Search Scraper settings
Configure your **LinkedIn Search Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| keywords | string | — | Free-text search keywords. Overrides the keywords of the pasted URL when set. Works on people, company and post searches. |
| first\_name | string | — | People search only. Keeps only profiles whose first name matches. |
| last\_name | string | — | People search only. Keeps only profiles whose last name matches. |
| title | string | — | People search only. Free-text job title filter. LinkedIn matches it against the current title. |
| company | string | — | People search only. Free-text company filter. For an exact company page use `current_company_url` instead — if both are filled, `current_company_url` wins. |
| current\_company\_url | string | — | People search only. LinkedIn company page URL or slug. Resolved to LinkedIn's company id; keeps only people currently working there. Costs one extra request per task. |
| school | string | — | People search only. Free-text school filter. |
| network | string | — | People search only. Connection degrees to keep, from `1st`, `2nd`, `3rd+`. Comma separated for several (e.g. `1st,2nd`). |
| profile\_language | string | — | People search only. Two-letter profile language codes, comma separated (e.g. `fr` or `en,fr`). |
| location | string | — | A place name (e.g. `France`, `Paris`, or `Paris Texas` to pick one city among namesakes). LinkedIn's numeric geo id still works (e.g. `103644278` for the United States). Comma separated for several. Applies to people (member location) and companies (headquarters location). |
| industry | string | — | Company search only. An industry name as LinkedIn lists it (e.g. `Software Development`, `Hospitals and Health Care`). LinkedIn's numeric industry id still works. Comma separated for several. |
| max\_results | integer | 1000 | Maximum number of rows to collect per search URL. LinkedIn never returns more than about 1,000 results for one search, whatever this is set to. |
| max\_unique\_results\_per\_run | integer | — | Maximum number of unique results retrieved across all tasks in the entire run. Leave empty for unlimited. |
| profile\_details | boolean | false | People search only. Opens each profile once to add the About text, current position, full experience, education, skills, open-to-work and creator flags and the cover photo. Costs 1 extra credit per profile. |
| company\_details | boolean | false | Company search only. Opens each company page once to add the website, description, tagline, founding year, employee and follower counts, size, type, headquarters and offices, specialties, cover image, similar/showcase/affiliated pages, products and phone. Costs 1 extra credit per company. |
| post\_engagement | boolean | false | Post search only. Opens each post once to add its like, comment and repost counts. Costs 1 extra credit per post. |
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "CEO",
"location": "United States",
"network": "1st,2nd",
"max_results": 500,
"profile_details": true
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"title": "CEO",
"location": "United States",
"network": "1st,2nd",
"max_results": 500,
"profile_details": True,
},
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"title": "CEO", "location": "United States", "network": "1st,2nd", "max_results": 500, "profile_details": true}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/naukri-jobs-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Naukri Jobs Scraper squid
Add URLs or inputs to your **Naukri Jobs Scraper** squid.
Crawler ID: `28ca7564a332a081a1dabda552d5c35b`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
Naukri job search URL or a link to a single job posting. Example: `https://www.naukri.com/python-developer-jobs`
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "28ca7564a332a081a1dabda552d5c35b",
"tasks": [
{"url": "https://www.naukri.com/python-developer-jobs"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "28ca7564a332a081a1dabda552d5c35b",
"tasks": [
{"url": "https://www.naukri.com/python-developer-jobs"}
],
},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.naukri.com/python-developer-jobs"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/naukri-jobs-scraper/credit-cost
Credit cost for the Naukri Jobs Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Jobs | 1 | 1 credit per job posting. |
| Full Job Details | 1 | 1 extra credit per job posting when the add-on is enabled. Off by default. |
# Get Results
Source: https://docs.lobstr.io/examples/naukri-jobs-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Naukri Jobs Scraper
Retrieve scraped data from your **Naukri Jobs Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Page number (default: 1)
## Result Fields
Naukri's unique identifier for the job posting. Example: `19999911`
Job title as published by the employer. Example: `Senior Python Developer`
Direct link to the job posting on Naukri. Example: `https://www.naukri.com/job-listings-senior-python-developer-infosys-bangalore-3-to-6-years-140926500456`
Name of the hiring company. Example: `Infosys`
Naukri's internal identifier for the hiring company. Example: `3456`
Link to the company's job page on Naukri. Example: `https://www.naukri.com/infosys-jobs`
URL of the company logo. Example: `https://static.naukimg.com/s/4/100/i/infosys.png`
Naukri group identifier for multi-branch employers. Example: `100`
Job location(s), comma separated. Example: `Bangalore, Hyderabad`
Required experience as displayed on Naukri. Example: `3 to 6 Yrs`
Minimum years of experience required. Example: `3`
Maximum years of experience required. Example: `6`
Salary as displayed on Naukri (often 'Not disclosed'). Example: `8-14 Lacs PA`
Minimum yearly salary. Example: `800000`
Maximum yearly salary. Example: `1400000`
Currency of the salary figures. Example: `INR`
Minimum monthly salary. Example: `66667`
Maximum monthly salary. Example: `116667`
Share of the package that is variable pay, in percent. Example: `15.0`
True when the employer chose to hide the salary. Example: `false`
Where the structured salary comes from. Example: `EMPLOYER_PROVIDED`
Skills tagged on the posting, comma separated. Example: `Python, Django, REST API`
Job description as plain text.
Job description with original HTML formatting.
Date and time the job was posted, in UTC. Example: `2026-09-14T06:00:00Z`
How long ago the job was posted, as displayed on Naukri. Example: `1 Day Ago`
Number of positions to fill. Example: `5`
True when the job is a walk-in interview. Example: `false`
Type tag shown on the listing. Example: `Full Time, Permanent`
True when the posting comes from a recruitment consultancy. Example: `false`
End client the consultancy is hiring for. Example: `Acme Corp`
External application link. Example: `https://www.infosys.com/careers/apply/19999911`
True when applying redirects to the company's own site. Example: `true`
Naukri role-category identifier. Example: `7`
Company rating on AmbitionBox, out of 5. Example: `3.9`
Number of AmbitionBox employee reviews. Example: `28461`
Link to the company's AmbitionBox reviews. Example: `https://www.ambitionbox.com/reviews/infosys-reviews`
True when Naukri flags the employer as a top company. Example: `true`
True when the posting is exclusive to Naukri. Example: `false`
Diversity preference stated on the posting. Example: `Women-friendly workplace`
Branding tags attached to the posting, comma separated. Example: `Work From Home, Flexi Working`
Walk-in venue address.
First day of the walk-in.
Last day of the walk-in.
Daily walk-in timing.
Total jobs Naukri reports for this search. Example: `4328`
### Detail Fields
The following fields require `job_details: true` in settings.
Number of candidates who already applied. Example: `342`
Number of times the posting was viewed. Example: `5120`
Employment type, e.g. Full Time, Permanent. Example: `Full Time, Permanent`
Work arrangement: Work from office, Hybrid or Remote. Example: `Hybrid`
Standardised job role. Example: `Software Developer`
Role category label. Example: `Engineering - Software & QA`
Department / functional area. Example: `Engineering - Software & QA`
Industry of the hiring company. Example: `IT Services & Consulting`
Accepted undergraduate degrees. Example: `B.Tech/B.E. in Any Specialization`
Accepted postgraduate degrees. Example: `MCA in Any Specialization`
Skills Naukri marks as preferred. Example: `FastAPI, PostgreSQL`
Other skills listed on the posting. Example: `Docker, Kubernetes`
Naukri's own highlights of the posting.
Employer's internal reference code. Example: `INF-PY-BLR-2026`
True when published on a company microsite. Example: `false`
Company website. Example: `https://www.infosys.com`
Company address. Example: `Electronics City, Bangalore, Karnataka 560100`
About the company.
Tags Naukri displays next to the company. Example: `MNC, IT Product`
Company rating on the branded job page. Example: `3.9`
Number of Naukri users following the company. Example: `182340`
Structured list of job locations with Naukri links.
Banner image of the employer's branded page. Example: `https://static.naukimg.com/s/4/100/i/infosys-banner.jpg`
Recent AmbitionBox employee reviews.
AmbitionBox salary benchmark for this job profile.
AmbitionBox benefits reported for the company.
## Code Examples
```bash cURL theme={null}
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=28ca7564a332a081a1dabda552d5c35b" \
-d "page=1"
```
```python Python theme={null}
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "28ca7564a332a081a1dabda552d5c35b", "page": 1},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"job_id": "19999911", "title": "Senior Python Developer", "company_name": "Infosys", "location": "Bangalore, Hyderabad", "experience_text": "3 to 6 Yrs", "salary_text": "8-14 Lacs PA", "key_skills": "Python, Django, REST API", "posted_at": "2026-09-14T06:00:00Z"}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/naukri-jobs-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Naukri Jobs Scraper settings
Configure your **Naukri Jobs Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| keyword | string | — | Job title, skill or company to search for (used when no task URL) |
| location | string | — | City or region to search in, e.g. 'bangalore' |
| experience | string | Any | Years of experience filter. '0' means fresher |
| salary\_range | string | Any | Yearly package band filter |
| job\_type | string | Any | Company Jobs or Recruiter Jobs |
| work\_mode | string | Any | Work from office, Hybrid, or Remote |
| date\_posted | string | Any time | Only return jobs posted within this window |
| sort\_by | string | Relevance | Relevance or Date posted |
| max\_results | integer | 1000 | Max jobs per search |
| max\_unique\_results\_per\_run | integer | — | Max unique results across all tasks in the run |
| fetch\_since | string | — | Only collect jobs posted after this threshold |
| fetch\_since\_timezone | string | — | Timezone for fetch\_since (e.g. Asia/Kolkata) |
| job\_details | boolean | false | Open each job posting to collect full description, applicant and view counts, education requirements |
Setting `job_details: true` enables additional detail fields in results.
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/28ca7564a332a081a1dabda552d5c35b \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"keyword": "python developer",
"location": "bangalore",
"experience": "3",
"work_mode": "Hybrid",
"job_details": true,
"max_results": 1000
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/28ca7564a332a081a1dabda552d5c35b",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"keyword": "python developer",
"location": "bangalore",
"experience": "3",
"work_mode": "Hybrid",
"job_details": True,
"max_results": 1000,
},
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"keyword": "python developer", "location": "bangalore", "experience": "3", "work_mode": "Hybrid", "job_details": true, "max_results": 1000}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/pages-jaunes-iter-companies/add-tasks
POST https://api.lobstr.io/v1/tasks
Add Pages Jaunes search URLs as tasks for scraping French business directory listings
Add Pages Jaunes (French Yellow Pages) search URLs to your squid for scraping business directory listings. The scraper extracts company information including contact details, addresses, business registration numbers (SIRET/SIREN), and social media profiles from France's largest business directory.
Crawler ID: `cd3e6b39d78365cd9d0ffbe1c7f5e5bd`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Task Format
Each task should contain a URL from a Pages Jaunes search results page. Search for businesses by category and location on the website, then use those search URLs as tasks.
## Supported URL Formats
The scraper supports Pages Jaunes search URLs:
Pages Jaunes URLs use department codes (e.g., 'paris-75' for Paris). Apply location filters on the website to get properly formatted URLs.
Search by specific business categories (boulanger, plombier, restaurant) to get targeted results for your industry research.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{
"url": "https://www.pagesjaunes.fr/annuaire/paris-75/boulanger"
}
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Add Pages Jaunes search URLs as tasks
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"squid": squid_id,
"tasks": [
{"url": "https://www.pagesjaunes.fr/annuaire/paris-75/boulanger"},
{"url": "https://www.pagesjaunes.fr/annuaire/lyon-69/plombier"}
]
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates skipped: {data['duplicated_count']}")
for task in data["tasks"]:
print(f" Task ID: {task['id']}")
print(f" URL: {task['params']['url']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "82367f24d9450b2222080eed91662968",
"created_at": "2025-07-17T09:06:47.287893",
"is_active": true,
"params": {
"url": "https://www.pagesjaunes.fr/annuaire/paris-75/boulanger"
},
"module": 115,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/pages-jaunes-iter-companies/credit-cost
Credit cost for the Pages Jaunes Companies Search Export
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Companies | 1 | 1 credit per business. |
| Collect Additional Details | 1 | 1 credit per business. |
| Collect Emails from Website | 1 | 1 credit per business if any email address is found. No email found = 0 credits. |
# Get Results
Source: https://docs.lobstr.io/examples/pages-jaunes-iter-companies/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Pages Jaunes Companies Search Export
Retrieve scraped data from your **Pages Jaunes Companies Search Export** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique identifier for the business on PagesJaunes. Example: `50819340`
Business name as listed on PagesJaunes. Example: `Story Vannes`
Direct URL to the business listing on PagesJaunes. Example: `https://www.pagesjaunes.fr/pros/50819340#zoneHoraires`
Average customer rating of the business on PagesJaunes. Example: `4.7`
Total number of customer reviews on PagesJaunes. Example: `282`
Full formatted address of the business. Example: `Zac De Luscanen 9 avenue Louis de Cadoudal 56880 Ploeren`
Street address without postal code and city. Example: `Zac De Luscanen 9 avenue Louis de Cadoudal`
Postal code of the business location. Example: `56880`
City where the business is located. Example: `Ploeren`
Business description or tagline as shown on PagesJaunes. Example: `Avez-vous besoin d'un magasin pour meubler et décorer votre maison ? Notre magasin vous propose les dernières tendances de l'ameublement et de la décoration, des exclusivités innovantes et colorées. Vous trouverez un large choix de meubles pour salon, mobilier design, literie, relaxation et chambre. Nous fabriquons et installons également des dressings.`
Tags or keywords associated with the business on PagesJaunes. Example: `vitrine, livraison sur toute la France, meuble de salon, livraison à domicile, dressing, montage à domicile, canapé cuir, literie`
URL of the business's main image on PagesJaunes. Example: `https://www.pagesjaunes.fr/media/newdam/preset-thumbnail-logo-desktop/be/9e/30/00/00/90/d7/46/a6/d3/6994be9e30000090d746a6d3/6994be9e30000090d746a6d4.jpg`
Primary phone number of the business. Example: `02 97 63 87 80`
French company SIRET number (14-digit unique identifier). Example: `48489335900014`
French NAF/APE activity code identifying the business sector. Example: `4759A`
Size category of the business location. Example: `3 à 5 salariés`
Type or format of the business (e.g. chain store, independent). Example: `Siège`
French company SIREN number (9-digit identifier). Example: `484893359`
Main activity or trade of the business. Example: `magasins de meubles`
Location of the company headquarters
Date the company was founded. Example: `2005-10-31T23:00:00+00:00`
Company size by number of employees (e.g. 1–10, 50–200). Example: `3 à 5 salariés`
Business website URL. Example: `https://www.story.fr/magasins/meuble-vannes-story/`
Facebook page URL of the business. Example: `https://www.facebook.com/story.francereseau`
Instagram profile URL of the business. Example: `https://www.instagram.com/storyvannes/`
Email address of the business. Example: `story.vannes@story.fr`
Secondary or alternative phone number of the business. Example: `0297638780`
Input search URL the listing was discovered from
Legal business name as registered (raison sociale)
French legal form code of the company (e.g. `SAS`, `SARL`, `EI`)
Comma-separated list of all activities the business is registered for
Comma-separated list of alternative trade names registered for the business
Total number of establishments registered under the same SIREN
Listing tier on Pages Jaunes. Example: `PROFESSIONNEL`
Whether the listing is verified on Pages Jaunes
Latitude of the business location
Longitude of the business location
JSON-encoded weekly opening hours, keyed by day in French. Example: `{"Lundi": "09:00-18:00", "Mardi": "09:00-18:00"}`
Comma-separated list of all business image URLs
Comma-separated list of all external website and social URLs of the business
Comma-separated list of accepted payment methods. Example: `Carte bancaire, Chèque, Espèces`
Comma-separated list of services offered by the business
Comma-separated list of products sold by the business
Comma-separated list of brands carried by the business
Whether the business accepts quote requests via Pages Jaunes
JSON-encoded list of the most recent customer reviews (up to 20)
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 21375,
"object": "result",
"squid": "b028468237e0aa1f0ef441023b91a729",
"run": "de3f1917f27c05d6f209b5d86447e4c6",
"item_id": "50819340",
"title": "Story Vannes",
"url": "https://www.pagesjaunes.fr/pros/50819340#zoneHoraires",
"score": 4.7,
"ratings": 282,
"full_address": "Zac De Luscanen 9 avenue Louis de Cadoudal 56880 Ploeren",
"street_address": "Zac De Luscanen 9 avenue Louis de Cadoudal",
"zip_code": "56880",
"city": "Ploeren",
"description": "Avez-vous besoin d'un magasin pour meubler et décorer votre maison ? Notre magasin vous propose les dernières tendances de l'ameublement et de la décoration, des exclusivités innovantes et colorées. Vous trouverez un large choix de meubles pour salon, mobilier design, literie, relaxation et chambre. Nous fabriquons et installons également des dressings.",
"tags": "vitrine, livraison sur toute la France, meuble de salon, livraison à domicile, dressing, montage à domicile, canapé cuir, literie",
"image_url": "https://www.pagesjaunes.fr/media/newdam/preset-thumbnail-logo-desktop/be/9e/30/00/00/90/d7/46/a6/d3/6994be9e30000090d746a6d3/6994be9e30000090d746a6d4.jpg",
"phone": "02 97 63 87 80",
"siret": "48489335900014",
"naf_code": "4759A",
"shop_size": "3 à 5 salariés",
"shop_type": "Siège",
"siren": 484893359,
"activity": "magasins de meubles",
"company_hq": null,
"company_creation_date": "2005-10-31T23:00:00+00:00",
"company_size": "3 à 5 salariés",
"website": "https://www.story.fr/magasins/meuble-vannes-story/",
"facebook": "https://www.facebook.com/story.francereseau",
"instagram": "https://www.instagram.com/storyvannes/",
"email": "story.vannes@story.fr",
"additional_phone": "0297638780",
"ref": "https://www.pagesjaunes.fr/annuaire/paris-75/boulanger",
"raison_social": "Atie Bat",
"forme_juridique": "5710",
"multi_activite": "Plombiers, Entreprises d'électricité générale, Dépannage plomberie, Vitrerie",
"autres_denominations": "DENOMINATION ALTERNATIVE 1, DENOMINATION ALTERNATIVE 2",
"nombre_etablissements": 0,
"listing_type": "PROFESSIONNEL",
"is_verified": true,
"latitude": 48.856898,
"longitude": 2.350843,
"opening_hours": "{\"Lundi\": [\"06h00 - 23h00\"], \"Mardi\": [\"06h00 - 23h00\"]}",
"images": "https://www.pagesjaunes.fr/media/img1.jpg, https://www.pagesjaunes.fr/media/img2.jpg",
"external_links": "https://www.atie-bat.fr/contact",
"payment_methods": "CB, Espèces, Chèque, Virement",
"prestations": "réparation d'émail de sanitaire, réparation de chauffe-eau",
"products": "wc, robinetterie, cabine de douche",
"brands": "GROHE, Ideal Standard, Vaillant",
"accepts_quote_requests": false,
"reviews": "[{\"author\": \"Jean D.\", \"rating\": 5, \"date\": \"2025-04-10\", \"text\": \"Excellent service.\"}]",
"functions": null,
"native_id": 21375
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/pages-jaunes-iter-companies/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Pages Jaunes Companies Search Export scraper parameters and enrichment options
Configure your Pages Jaunes Companies Search Export squid settings to control pagination and enable detailed company information enrichment. Enable functions to collect email addresses, social media profiles, and official business registration numbers.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_pages** | integer | unlimited | Maximum number of search result pages to scrape |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the run |
| **functions.collect\_contacts** | boolean | true | Visit each company's detail page to collect enriched data: opening hours, images, social links, payment methods, services, reviews and more (1 credit per company) |
| **functions.results\_details** | boolean | true | Collect official business registration details: SIRET, SIREN, NAF codes, legal form, and other registry data (1 credit per company) |
## General Settings
Standard squid settings that apply to all scrapers:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Enabling `functions.collect_contacts` or `functions.results_details` increases run time due to additional HTTP requests per listing.
SIRET numbers are valuable for B2B verification and can be used to look up official company information in French government databases.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Pages Jaunes Companies Search Export (2)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"functions": {
"collect_contacts": true,
"results_details": true
},
"max_pages": 3
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Configure scraper with enrichment functions
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Pages Jaunes Companies Search Export (2)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"functions": {
"collect_contacts": True, # Enriched detail page data
"results_details": True # Official registry data (SIRET, SIREN, NAF)
},
"max_pages": 3
}
}
)
data = response.json()
print(f"Squid updated: {data['name']}")
print(f"Max pages: {data['params']['max_pages']}")
print(f"Collect additional details: {data['params']['functions']['collect_additional_details']}")
print(f"Collect emails from website: {data['params']['functions']['collect_emails_from_website']}")
```
## Response
```json 201 theme={null}
{
"name": "Pages Jaunes Companies Search Export (2)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"functions": {
"collect_contacts": true,
"results_details": true
},
"max_pages": 3
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/pap-iter-apartments/add-tasks
POST https://api.lobstr.io/v1/tasks
Add PAP.fr search URLs as tasks for scraping French real estate listings
Add PAP.fr (Particulier a Particulier) search URLs to your squid for scraping French private real estate listings. PAP is a French platform for direct owner-to-buyer property transactions without agents. The scraper extracts property details including price, location, energy ratings, and contact information.
Crawler ID: `9980d62d6a23161a08d1134c0cabdf5c`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Task Format
Each task should contain a URL from a PAP.fr search results page. You can search for properties by location, type, and filters on PAP, then use those search URLs as tasks.
## Supported URL Formats
The scraper supports PAP.fr search URLs from various property categories:
PAP.fr is for private sales (particulier a particulier), meaning you deal directly with owners rather than agencies. This can mean more negotiation flexibility.
PAP URLs use department codes (e.g., 'ain-01' for Ain department). Apply location filters on the website to get the correct URL format.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{
"url": "https://www.pap.fr/annonce/vente-immobiliere-ain-01-g364"
}
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Add PAP.fr search URLs as tasks
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"squid": squid_id,
"tasks": [
{"url": "https://www.pap.fr/annonce/vente-immobiliere-ain-01-g364"},
{"url": "https://www.pap.fr/annonce/vente-immobiliere-paris-75-g439"}
]
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates skipped: {data['duplicated_count']}")
for task in data["tasks"]:
print(f" Task ID: {task['id']}")
print(f" URL: {task['params']['url']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "82367f24d9450b2222080eed91662968",
"created_at": "2025-07-17T09:06:47.287893",
"is_active": true,
"params": {
"url": "https://www.pap.fr/annonce/vente-immobiliere-ain-01-g364"
},
"module": 115,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/pap-iter-apartments/credit-cost
Credit cost for the PAP Search Export
1 credit per listing.
# Get Results
Source: https://docs.lobstr.io/examples/pap-iter-apartments/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from PAP Search Export
Retrieve scraped data from your **PAP Search Export** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique identifier for the listing on PAP (Particulier à Particulier). Example: `460201580`
Direct URL to the listing on PAP. Example: `https://www.pap.fr/annonces/maison-bourg-en-bresse-01000-r460201580`
Title of the property listing on PAP. Example: `Vente maison 122 m² Bourg-En-Bresse (01000)`
Breadcrumb navigation path indicating the listing's category and location on PAP
Listed price of the property
Currency of the listed price
PAP reference number for the listing. Example: `G02/1580`
Date the listing was published on PAP. Example: `2026-03-20`
List of property image URLs from the listing. Example: `https://cdn.pap.fr/photos/pap/84/e6/84e6846cf2588b1ddd8c4422e93eb447/8-p1.jpg, https://cdn.pap.fr/photos/pap/8e/96/8e96e04a6f71b9d765f776a622bfc7a8/8-p1.jpg, https://cdn.pap.fr/photos/pap/ac/b6/acb6e93116c4f857f08d4110ad95ca99/a-p1.jpg, https://cdn.pap.fr/photos/pap/36/59/36592cba805e27d997e3be34489a9133/3-p1.jpg, https://cdn.pap.fr/photos/pap/e2/ae/e2ae8afbecf9b31e4139ecbb8d578158/e-p1.jpg, https://cdn.pap.fr/photos/pap/9d/b7/9db7715952cd1b323d0246c6d867a84b/9-p1.jpg`
Total number of rooms in the property. Example: `5`
Number of bedrooms in the property. Example: `3`
Living surface area of the property in square metres
Neighborhood or locality where the property is located. Example: `Bourg-en-Bresse (01000)`
Full description text provided by the seller on PAP. Example: `Maison à vendre dans le quartier des Vennes en face de l'école des Vennes de 100 m² avec un appartement indépendant en dessous de 22 m² indépendant. La maison à 3 chambres de 11 à 13 m² chacune + une cuisine de 13 m² avec cuisine incorporée une grande salle a manger salon avec beau parquet de 41 m² avec accès sur balcon de 7 m² avec volet roulant électrique. Salle de bain de 5 m² refaites à neuf avec douche italienne de juillet 2025 aménagée qui peut convenir pour personne âgée... / wc séparé. Grande cave sous presque toute la maison avec plusieurs pièces qui peuvent très bien être aménagées comme pièces de vie même si la hauteur ne permet pas que ces dernières soient considérées comme des pièces de vie mais aucun souci pour les aménager comme tel si besoin, elles sont pourvue de plusieurs placards de rangements...`
Contact phone number of the seller. Example: `06 12 02 24 61`
Energy performance class of the property (DPE rating, e.g. A to G). Example: `E`
Greenhouse gas emissions class of the property (GES rating, e.g. A to G). Example: `E`
Latitude coordinate of the property. Example: `46.189715`
Longitude coordinate of the property. Example: `5.228885`
Price per square metre as computed by PAP. Example: `2459`
Transaction type for the listing. Example: `vente`, `location`
Property type as a lowercase slug. Example: `appartement`, `maison`
Property type in display form as shown on PAP. Example: `Appartement`
Full sentence describing the energy performance (DPE) class. Example: `Logement très peu performant`
Full sentence describing the greenhouse gas emissions (GES) class. Example: `Émissions très élevées`
Nearby public transit stations and their lines.
URL of the listing's virtual tour, if any.
Whether the listing is marked as PAP-exclusive.
Whether the owner can be contacted by email (some owners accept phone contact only).
Whether PAP independently validated the listing's asking price.
Whether the owner's listing shows the "refuses commercial canvassing" flag.
Whether the owner offers a WhatsApp video-call viewing option.
URL of the listing's YouTube video, if any.
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 27227,
"object": "result",
"squid": "ef94be05b736ba2a22478b3bd5b48617",
"run": "d1cb411736760627050af20746043c69",
"internal_id": "460201580",
"url": "https://www.pap.fr/annonces/maison-bourg-en-bresse-01000-r460201580",
"title": "Vente maison 122 m² Bourg-En-Bresse (01000)",
"breadcrumb": null,
"price": null,
"currency": null,
"ref": "G02/1580",
"publication_date": "2026-03-20",
"image_urls": [
"https://cdn.pap.fr/photos/pap/84/e6/84e6846cf2588b1ddd8c4422e93eb447/8-p1.jpg",
"https://cdn.pap.fr/photos/pap/8e/96/8e96e04a6f71b9d765f776a622bfc7a8/8-p1.jpg",
"https://cdn.pap.fr/photos/pap/ac/b6/acb6e93116c4f857f08d4110ad95ca99/a-p1.jpg"
],
"rooms": 5,
"bedrooms": 3,
"size": null,
"neighborhood": "Bourg-en-Bresse (01000)",
"description": "Maison à vendre dans le quartier des Vennes en face de l'école des Vennes de 100 m² avec un appartement indépendant en dessous de 22 m² indépendant. La maison à 3 chambres de 11 à 13 m² chacune + une cuisine de 13 m² avec cuisine incorporée une grande salle a manger salon avec beau parquet de 41 m² avec accès sur balcon de 7 m² avec volet roulant électrique. Salle de bain de 5 m² refaites à neuf avec douche italienne de juillet 2025 aménagée qui peut convenir pour personne âgée... / wc séparé. Grande cave sous presque toute la maison avec plusieurs pièces qui peuvent très bien être aménagées comme pièces de vie même si la hauteur ne permet pas que ces dernières soient considérées comme des pièces de vie mais aucun souci pour les aménager comme tel si besoin, elles sont pourvue de plusieurs placards de rangements...",
"phone": "06 12 02 24 61",
"energy": "E",
"ges": "E",
"lat": 46.189715,
"lng": 5.228885,
"price_per_sqm": 10417,
"produit": "vente",
"typebien": "appartement",
"typebien_label": "Appartement",
"energy_description": "Logement avec une consommation annuelle d'énergie comprise entre 251 et 330 kWh/m²/an.",
"ges_description": "Logement avec une émission de gaz à effet de serre comprise entre 51 et 70 kgéqCO2/m²/an.",
"transports": "Alexandra David-Néel (tram-0, tram-3a); Porte de Vincennes (metro-0, metro-1, tram-0, tram-3b, tram-3a)",
"visite_virtuelle": "https://my.matterport.com/show/?m=3RoVyvrsNMq&brand=0",
"exclusive": false,
"has_email": true,
"prix_valide": false,
"affiche_demarchage_refuse": true,
"appel_video": false,
"video": "https://www.youtube.com/watch?v=BHYfsB3y4n8",
"functions": null,
"native_id": 27227
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/pap-iter-apartments/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the PAP Apartments scraper parameters and options
Configure your PAP Apartments squid settings to control the maximum number of results to scrape. Adjust settings based on how many listings you need from each search.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_results** | integer | unlimited | Maximum number of listings to collect per task |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the run |
| **fetch\_since** | string | — | Only keep listings published after this point (based on `publication_date`). Use a relative duration (`24h`, `7d`, `2w`) or an absolute date (`YYYY-MM-DD HH:MM:SS`) |
| **fetch\_since\_timezone** | string | — | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Ignored for relative values. |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Start with a lower max\_results value (e.g., 50) to test your search before scaling up to larger extractions.
PAP typically has fewer listings than agency-based platforms since it only features private sellers.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "PAP Apartments (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 200
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "PAP Apartments (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_results": 200
}
}
)
data = response.json()
print(f"Squid updated: {data['name']}")
```
## Response
```json 201 theme={null}
{
"name": "PAP Apartments (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 200
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/paruvendu-listings-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your ParuVendu Listings Scraper squid
Add URLs or inputs to your **ParuVendu Listings Scraper** squid. Each task object must include the required fields below.
Crawler ID: `6a564030e814e6de4931637f7fb0c06e`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task supports the fields below.
## Task Fields
A paruvendu.fr search URL. Example: `https://www.paruvendu.fr/a/voiture-occasion/bmw/`
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{ "url": "https://www.paruvendu.fr/a/voiture-occasion/bmw/" },
{ "url": "https://www.paruvendu.fr/a/voiture-occasion/audi/" }
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_hash = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"squid": squid_hash,
"tasks": [
{"url": "https://www.paruvendu.fr/a/voiture-occasion/bmw/"},
{"url": "https://www.paruvendu.fr/a/voiture-occasion/audi/"}
]
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
for task in data["tasks"]:
print(f" {task['id']}: {task['params']['url']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"created_at": "2025-06-24T11:11:30.222467",
"is_active": true,
"params": {
"url": "https://www.paruvendu.fr/a/voiture-occasion/bmw/"
},
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/paruvendu-listings-scraper/credit-cost
Credit cost for the ParuVendu Listings Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Listings | 1 | 1 credit per listing. |
| Get Annonce Details | 4 | 4 credits per listing. |
# Get Results
Source: https://docs.lobstr.io/examples/paruvendu-listings-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from ParuVendu Listings Scraper
Retrieve scraped data from your **ParuVendu Listings Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from.
Hash of a specific run (optional).
Page number (default: 1).
Results per page (default: 50, max: 100).
## Result Fields
Direct URL to the listing on paruvendu.fr.
Title of the listing. Example: `BMW Série 3 320d 150ch`
Top-level category of the listing (e.g. car, real estate). Example: `voiture`
Type of listing (e.g. sale, rental). Example: `vente`
Sub-category or asset type within the section. Example: `berline`
Listed price. Example: `12500`
Currency of the price. Example: `EUR`
Vehicle manufacturer or brand. Example: `BMW`
Vehicle model. Example: `Série 3`
Year of manufacture. Example: `2018`
Odometer reading in kilometres. Example: `85000`
Fuel type (e.g. Diesel, Essence, Électrique). Example: `Diesel`
Gearbox type (e.g. Manuelle, Automatique). Example: `Manuelle`
City or region of the listing. Example: `Paris`
Postal code of the listing location. Example: `75001`
Number of rooms (for real estate listings).
Surface area in square metres (for real estate listings).
URL of the main listing image.
Short preview of the listing description.
Full description text (available when `get_annonce_details` is enabled).
List of features or equipment (available when `get_annonce_details` is enabled).
Name of the seller (available when `get_annonce_details` is enabled).
URL to the seller's profile page (available when `get_annonce_details` is enabled).
Number of active listings by the seller (available when `get_annonce_details` is enabled).
Seller phone number (available when `get_annonce_details` is enabled).
Unique listing reference number on paruvendu.fr.
Date the listing was last published or refreshed. Example: `2026-03-15`
ISO 8601 timestamp of the last update. Example: `2026-03-15T10:30:00Z`
Energy performance rating (DPE) for real estate listings (A–G). Example: `C`
Greenhouse gas emission rating (GES) for real estate listings (A–G). Example: `D`
Additional structured info extracted from the listing summary.
## Code Examples
```bash cURL theme={null}
curl -X GET "https://api.lobstr.io/v1/results?squid=YOUR_SQUID_HASH&page=1&page_size=50" \
-H "Authorization: Token YOUR_API_KEY"
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
params = {
"squid": "YOUR_SQUID_HASH",
"page": 1,
"page_size": 50
}
all_results = []
url = f"{BASE_URL}/results"
while True:
response = requests.get(url, headers=headers, params=params)
data = response.json()
all_results.extend(data["data"])
print(f"Fetched page {data['page']} of {data['total_pages']}")
if data["next"] is None:
break
url = data["next"]
params = {}
print(f"\nTotal listings collected: {len(all_results)}")
for listing in all_results[:5]:
print(f"- {listing.get('title')} — {listing.get('price')} {listing.get('currency')} ({listing.get('location')})")
```
## Response
```json 200 theme={null}
{
"total_results": 87,
"limit": 50,
"page": 1,
"total_pages": 2,
"result_from": 1,
"result_to": 50,
"data": [
{
"id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"object": "result",
"squid": "YOUR_SQUID_HASH",
"run": "RUN_HASH",
"url": "https://www.paruvendu.fr/a/voiture-occasion/bmw/serie-3/12345678/",
"title": "BMW Série 3 320d 150ch BVA",
"section": "voiture",
"annonce_type": "vente",
"asset_type": "berline",
"price": 12500,
"currency": "EUR",
"make": "BMW",
"model": "Série 3",
"year": 2018,
"mileage": 85000,
"fuel_type": "Diesel",
"gearbox": "Automatique",
"location": "Paris",
"postal_code": "75001",
"picture": "https://img.paruvendu.fr/thumb/12345678_1.jpg",
"description_preview": "Véhicule en excellent état, révision faite...",
"last_publication_date": "2026-03-15",
"reference": "12345678",
"scraping_time": "2026-03-20T09:15:00.000Z"
}
],
"next": "https://api.lobstr.io/v1/results?squid=YOUR_SQUID_HASH&page=2&page_size=50",
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/paruvendu-listings-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure settings for your ParuVendu Listings Scraper squid
Update the configuration of your **ParuVendu Listings Scraper** squid. Pass crawler-specific settings inside the `params` object.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Crawler-specific settings. See fields below.
## Settings Fields
Maximum number of listings to collect per task. Leave empty for unlimited.
Maximum number of unique results across all tasks in a run. Leave empty for unlimited.
Maximum number of search result pages to crawl per task. Default: `100`, max: `100`.
Only collect listings published after this point. Use a date (`YYYY-MM-DD`) or a relative duration (`24h`, `7d`, `2w`). If not provided, no time filtering is applied.
**Category support:** publication dates are available on listing pages only for `immobilier`. For other categories (vehicles, services, animaux, etc.) a date is only available on the detail page — enable `get_annonce_details` for `fetch_since` to work with those categories. Some categories (`emploi`, `location-vacances`, `mondebarras`, `moto`, `services`) do not expose a publication date at all and `fetch_since` will have no effect for them.
Timezone for interpreting an absolute `fetch_since` date (e.g. `"Europe/Paris"`). Only applies when `fetch_since` is an absolute date — ignored for relative values like `"24h"` or `"7d"`.
Use `fetch_since: "7d"` to collect only listings from the last 7 days. Enable `get_annonce_details` if you're scraping non-`immobilier` categories and need date filtering to work.
## Optional Functions
Functions are optional add-ons that enable extra data extraction. Each incurs additional credits per row.
Fetch additional details by visiting each listing's detail page: full description, features, seller info, and phone number. Default: `false`. Extra cost: `4` credits per listing.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "ParuVendu BMW Listings",
"params": {
"max_results": 100,
"max_pages": 10,
"fetch_since": "7d",
"fetch_since_timezone": null,
"get_annonce_details": false
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_hash = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_hash}",
headers=headers,
json={
"name": "ParuVendu BMW Listings",
"params": {
"max_results": 100,
"max_pages": 10,
"fetch_since": "7d", # relative: "24h", "7d", "2w" | absolute: "2026-01-01"
"fetch_since_timezone": None, # e.g. "Europe/Paris" — only used with absolute fetch_since
"get_annonce_details": False
}
}
)
data = response.json()
print(f"Squid updated: {data['name']}")
```
## Response
```json 201 theme={null}
{
"id": "YOUR_SQUID_HASH",
"name": "ParuVendu BMW Listings",
"crawler": {
"id": "6a564030e814e6de4931637f7fb0c06e",
"name": "ParuVendu Listings Scraper",
"slug": "paruvendu-listings-scraper"
},
"params": {
"max_results": 100,
"max_pages": 10,
"fetch_since": "7d",
"fetch_since_timezone": null,
"get_annonce_details": false
},
"concurrency": 1,
"export_unique_results": true,
"to_complete": true,
"no_line_breaks": false,
"status": "idle",
"created_at": "2025-01-20T10:15:00.000000",
"updated_at": "2025-01-27T14:35:00.000000"
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/pinterest-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Pinterest Scraper squid
Add URLs or keywords to your **Pinterest Scraper** squid.
Crawler ID: `561d9028e73c59c9911c275b86073726`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
A keyword such as `home office`, or a Pinterest search, board, profile or pin link. Share links from the Pinterest app (`pin.it`) work too. A single word on its own is searched as a keyword, so paste the full link when you mean a profile. Example: `https://www.pinterest.com/search/pins/?q=home%20office`
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.pinterest.com/search/pins/?q=home%20office"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.pinterest.com/search/pins/?q=home%20office"}
],
},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.pinterest.com/search/pins/?q=home%20office"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/pinterest-scraper/credit-cost
Credit cost for the Pinterest Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Pins | 1 | 1 credit per pin. |
| Full Pin Details | 1 | 1 extra credit per pin when `pin_details` is enabled. Off by default. Included at no extra cost when the task is a single pin link. |
# Get Results
Source: https://docs.lobstr.io/examples/pinterest-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Pinterest Scraper
Retrieve scraped data from your **Pinterest Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`.
## Query Parameters
Hash of the squid to get results from.
Page number (default: 1).
## Result Fields
### Export Pins
Pinterest's unique identifier for the pin. Numeric for most pins, but some pins carry an encoded id such as `e1_AfqPShzqO1C7_LEkrAbtoIWUe2MoGdDTj5vU32Lr9gXn25qs1FpIvg`, so store it as text. Example: `37858453110553201`
Direct link to the pin on Pinterest. Example: `https://www.pinterest.com/pin/37858453110553201/`
Title of the pin. Frequently empty: most Pinterest pins carry only a description. Example: `Bright Living Room with Windows and Window Sill`
Plain-text description (caption) of the pin.
Description with Pinterest's own HTML markup (hashtag and mention links). Served on profile inputs, and on any pin when Full Pin Details is on.
Alternative text of the pin image. Uses the text written by the pinner when there is one, otherwise the text Pinterest generated automatically.
Date and time (UTC) the pin was created. Not served by Pinterest on board inputs unless Full Pin Details is on. Example: `2023-06-07 12:38:53+00:00`
True when the pin carries a video. Left blank (not False) on keyword-search rows: that surface only proves videos, it never says a pin has none — turn on Full Pin Details for a definitive answer on those rows.
Playable video stream of the pin (HLS playlist, MP4 when Pinterest serves no playlist). Empty on image pins.
True when the pin is a paid Pinterest ad.
True when the pin was saved from another pin rather than uploaded. Served on board and profile inputs, and on any pin when Full Pin Details is on.
Domain the pin links to, or `Uploaded by user` for a direct upload. Example: `potterybarn.com`
Outbound link the pin points to.
Number of times the underlying image was saved on Pinterest (the "saves" figure shown in the UI). Example: `3920`
Number of times this exact pin was re-pinned. A different counter from `save_count`, which aggregates every copy of the image.
Number of comments on the pin. Served on profile inputs, and on any pin when Full Pin Details is on.
Number of users who favourited the pin. Served on board inputs, and on any pin when Full Pin Details is on.
Total number of reactions on the pin. Pinterest currently ships a single reaction type.
Dominant colour of the pin image, as computed by Pinterest. Example: `#8e4a2c`
Full resolution image of the pin.
Width in pixels of the full resolution image.
Height in pixels of the full resolution image.
Every image size Pinterest serves for the pin, keyed by size label, with url, width and height.
Price attached to the pin when it is a product pin. Served on profile inputs, and on any pin when Full Pin Details is on.
Currency of `price_value`.
Visibility of the pin itself, e.g. `public`. Served on profile inputs, and on any pin when Full Pin Details is on.
Pinterest identifier of the account that owns the pin.
Handle of the account that owns the pin. Example: `potterybarn`
Display name of the account that owns the pin. Example: `Pottery Barn`
Link to the profile of the account that owns the pin.
Follower count of the account that owns the pin. Pinterest only ships it on some surfaces; filled from the profile header on a profile input.
Profile picture of the account that owns the pin.
True when the account that owns the pin is a Pinterest verified merchant.
Pinterest identifier of the board the pin is saved on.
Name of the board the pin is saved on. Example: `Instagram Inspiration`
Link to the board the pin is saved on.
Visibility of the board, e.g. `public`. Pinterest omits it from the keyword search payload.
Topic labels Pinterest attaches to the pin, e.g. `Flex Room Design Ideas`. Free on keyword searches; on board and profile pins Pinterest only serves them with Full Pin Details.
Every slide of a carousel pin, in order, with its own image url, width, height, outbound link and video url when the slide is a video. Empty for single-image pins. Free on board and profile pins; keyword searches only carry it with Full Pin Details.
### Full Pin Details
Number of times the pin was shared. Only Pinterest's pin page carries it, so it needs Full Pin Details.
Interest label Pinterest attaches to the pin, e.g. `Room Decor`. Only Pinterest's pin page carries it, so it needs Full Pin Details.
Objects Pinterest detected inside the pin image. Only Pinterest's pin page carries it, so it needs Full Pin Details. Frequently an empty list.
## Code Examples
```bash cURL theme={null}
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=YOUR_SQUID_HASH" \
-d "page=1"
```
```python Python theme={null}
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "YOUR_SQUID_HASH", "page": 1},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"pin_id": "37858453110553201", "pin_url": "https://www.pinterest.com/pin/37858453110553201/", "title": "Bright Living Room with Windows and Window Sill", "description": "This deserves another spot on the grid.", "domain": "potterybarn.com", "destination_url": "https://www.potterybarn.com/products/printers-writing-large-desk/", "save_count": 3920, "image_url": "https://i.pinimg.com/originals/c3/df/7f/c3df7f6f591485da278cb5a44aeff0be.jpg", "pinner_username": "potterybarn", "board_name": "Instagram Inspiration"}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/pinterest-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Pinterest Scraper settings
Configure your **Pinterest Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| video\_only | boolean | false | Only keep pins that come with a playable video. Idea pins are not included. |
| pin\_details | boolean | false | Open each pin to add its share, comment and save counts, price, alt text, full description and the topics Pinterest detected. Included at no extra cost when the task is a single pin link. Costs 1 extra credit per pin otherwise. |
| max\_results | integer | — | The most pins to collect from each keyword, board or profile. Leave empty to collect everything Pinterest shows. |
| max\_unique\_results\_per\_run | integer | — | Maximum number of unique pins retrieved across all tasks in the entire run. Leave empty for unlimited. |
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"video_only": false,
"pin_details": true,
"max_results": 100
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"video_only": False,
"pin_details": True,
"max_results": 100,
},
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"video_only": false, "pin_details": true, "max_results": 100}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/quora-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Quora Scraper squid
Add URLs or inputs to your **Quora Scraper** squid.
Crawler ID: `7a8473daa49fb96711016aa655384bb3`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
Quora question, profile, space, or topic URL. Example: `https://www.quora.com/What-is-the-best-programming-language-to-learn-first`
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"squid": "YOUR_SQUID_HASH", "tasks": [{"url": "https://www.quora.com/What-is-the-best-programming-language-to-learn-first"}]}'
```
```python Python theme={null}
import requests
headers = {"Authorization": "Token YOUR_API_KEY", "Content-Type": "application/json"}
response = requests.post("https://api.lobstr.io/v1/tasks", headers=headers,
json={"squid": "YOUR_SQUID_HASH", "tasks": [{"url": "https://www.quora.com/What-is-the-best-programming-language-to-learn-first"}]})
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.quora.com/What-is-the-best-programming-language-to-learn-first"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/quora-scraper/credit-cost
Credit cost for the Quora Scraper
1 credit per record (answer, post, profile, or topic).
# Get Results
Source: https://docs.lobstr.io/examples/quora-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Quora Scraper
Retrieve scraped data from your **Quora Scraper** runs.
Each row has a `record_type` field indicating what was scraped: `answer`, `profile`, `profile_answer`, `profile_post`, or `topic`. Fields are populated based on the record type.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Page number (default: 1)
## Result Fields
Row type — answer, profile, profile\_answer, profile\_post, or topic. Example: `answer`
Quora opaque base64 node id.
Canonical URL of this record.
The Quora URL given as task input.
Quora numeric question id.
Plain-text title of the question. Example: `What is the best programming language to learn first?`
Canonical URL of the question.
Number of answers Quora reports.
Number of followers of the question.
URL slug of the question.
Topics the question is filed under.
Related questions Quora surfaces.
Quora numeric answer id.
Plain-text body of the answer. Example: `Python is widely considered the best first language due to its clear syntax...`
UTC datetime the answer was posted.
Number of upvotes. Example: `1842`
Number of displayed comments.
Number of views. Example: `42301`
Number of shares.
Quora numeric user id of the author.
Display name of the author. Example: `John Doe`
URL of the author's Quora profile.
Credential displayed under the author's name.
True when posted anonymously.
True when author is listed as a most-viewed writer for the question's topic.
Quora numeric post id (Space/Post rows).
Title of the post.
Plain-text body of the post.
Image URLs embedded in the post.
UTC datetime the post was published.
Number of views.
Number of upvotes.
Number of displayed comments.
Number of shares.
Name of the Quora Space the post was published in.
Quora numeric Space id.
URL of the scraped profile.
Display name on the profile.
Plain-text profile description.
Top-line credential shown on the profile.
Number of followers.
Number of public answers.
Topic node ids the profile claims expertise in.
Quora numeric topic id.
Name of the topic.
URL of the topic.
Number of topic followers.
Related topics listed on the topic page.
Most-viewed writers leaderboard of the topic.
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"record_type": "answer", "question_title": "What is the best programming language to learn first?", "answer_content": "Python is widely considered the best first language due to its clear syntax...", "author_name": "John Doe", "answer_upvote_count": 1842, "answer_view_count": 42301}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/quora-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Quora Scraper settings
Configure your **Quora Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| **url** | string | — | URL of a Quora question, profile, space or topic |
| **max\_results** | integer | — | Maximum rows to collect per task |
| **max\_unique\_results\_per\_run** | integer | — | Max unique results across all tasks in a run |
| **resolve\_most\_viewed\_writers** | boolean | false | Fetch question's topic page to get most-viewed-writer status for each answerer |
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"params": {"max_results": 100, "resolve_most_viewed_writers": false}}'
```
```python Python theme={null}
import requests
requests.post("https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH",
headers={"Authorization": "Token YOUR_API_KEY", "Content-Type": "application/json"},
json={"params": {"max_results": 100, "resolve_most_viewed_writers": false}})
```
## Response
```json 201 theme={null}
{"params": {"max_results": 100, "resolve_most_viewed_writers": false}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/realtor-iter-listings/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Realtor Listings Scraper squid
Add URLs or inputs to your **Realtor Listings Scraper** squid. Each task object must include the required fields below.
Crawler ID: `f388a9866f943bc5c29bde8b33587bd3`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task supports the fields below.
## Task Fields
A realtor.com search URL. Example: `https://www.realtor.com/realestateandhomes-search/California/pg-5`
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{ "url": "https://www.realtor.com/realestateandhomes-search/California" },
{ "url": "https://www.realtor.com/realestateandhomes-search/New-York" }
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_hash = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"squid": squid_hash,
"tasks": [
{"url": "https://www.realtor.com/realestateandhomes-search/California"},
{"url": "https://www.realtor.com/realestateandhomes-search/New-York"}
]
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
for task in data["tasks"]:
print(f" {task['id']}: {task['params']['url']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"created_at": "2025-06-24T11:11:30.222467",
"is_active": true,
"params": {
"url": "https://www.realtor.com/realestateandhomes-search/California"
},
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/realtor-iter-listings/credit-cost
Credit cost for the Realtor Property Listings Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Listings | 0.5 | 0.5 credits per listing |
| Collect Property Details | 0.5 | 0.5 credits per listing |
# Get Results
Source: https://docs.lobstr.io/examples/realtor-iter-listings/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Realtor Listings Scraper
Retrieve scraped data from your **Realtor Listings Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from.
Hash of a specific run (optional).
Page number (default: 1).
Results per page (default: 50, max: 100).
## Result Fields
Direct URL to the listing on realtor.com. Example: `https://www.realtor.com/realestateandhomes-detail/123-Main-St_Los-Angeles_CA_90001_M12345-67890`
Full formatted address of the property. Example: `123 Main St, Los Angeles, CA 90001`
Street address. Example: `123 Main St`
City name. Example: `Los Angeles`
US state abbreviation. Example: `CA`
County name. Example: `Los Angeles County`
ZIP code. Example: `90001`
Listing status (e.g. for\_sale, sold, pending). Example: `for_sale`
Listed price in USD. Example: `750000`
Final sold price (if applicable). Example: `740000`
Currency of the price. Example: `USD`
Number of bedrooms. Example: `3`
Number of bathrooms. Example: `2.5`
Interior living area in square feet. Example: `1850`
Lot size in acres. Example: `0.15`
Type of property (e.g. single\_family, condo, townhouse). Example: `single_family`
Whether the property is new construction. Example: `false`
Whether the property is to be built. Example: `false`
Whether the listing is a foreclosure. Example: `false`
Whether the listing is under contract/pending. Example: `false`
Name of the brokerage listing the property. Example: `Keller Williams Realty`
Primary seller or listing agent name.
Co-seller or co-listing agent name.
Latitude coordinate of the property. Example: `34.052235`
Longitude coordinate of the property. Example: `-118.243683`
URL of the main listing photo.
Date the listing was first published. Example: `2026-03-10`
Date the property was listed. Example: `2026-03-10`
Date the property was sold (if applicable). Example: `2026-03-28`
Date the listing status last changed (e.g. listed → pending). Example: `2026-04-02`
Year the property was built. Example: `1998`
Monthly HOA fee in USD. Example: `250`
Price per square foot. Example: `405`
Listing agent's display name. Example: `Jane Smith`
Listing agent's phone number. Example: `+13105550142`
Listing agent email address. Example: `jane.smith@kw.com`
Brokerage office name. Example: `Keller Williams Realty`
Brokerage office phone number. Example: `+13105550100`
Builder name for new-construction listings. Example: `Pulte Homes`
Property sub-type (e.g. `co_op`, `condo`, `townhouse`). Example: `townhouse`
Number of garage spaces. Example: `2`
Neighborhood name. Example: `Silver Lake`
All neighborhood names for the listing (when multiple apply). Example: `["Silver Lake", "Eastside"]`
County FIPS code, for joining to census or market data. Example: `06037`
Google Street View image URL for the property.
Virtual tour / 3D walkthrough URL.
Whether the price was recently reduced. Example: `false`
Whether the listing is contingent. Example: `false`
Whether the listing is marked as coming soon. Example: `false`
Whether the listing was added in the last 14 days. Example: `true`
Amount of the most recent price reduction in USD. Example: `25000`
Scheduled open house dates and times, when available.
MLS listing ID. Example: `SR26054321`
Realtor.com internal property ID. Example: `M12345-67890`
Number of stories in the property. Example: `2`
Year the property was last renovated. Example: `2018`
## Detail Fields
These fields require `property_details: true`:
Full photo gallery (list of image URLs). Requires `property_details`.
Total number of photos. Requires `property_details`. Example: `42`
Per-photo metadata: AI-generated room tags (e.g. kitchen, bedroom), title and description for each photo. Requires `property_details`.
Full listing description text. Requires `property_details`.
Price and sale event timeline. Requires `property_details`.
Yearly tax, assessment and market valuations. Requires `property_details`.
Building permit history with project, type of work, project type, and effective date. Requires `property_details`.
Rated nearby schools with grades, ratings and distance. Requires `property_details`.
Full spec sheet grouped by category (interior, exterior, HOA, etc.). Requires `property_details`.
Structured amenity tags, each with a stable `id` and human-readable `label`. Requires `property_details`.
Number of full bathrooms. Requires `property_details`. Example: `2`
Number of half bathrooms. Requires `property_details`. Example: `1`
Number of three-quarter bathrooms. Requires `property_details`. Example: `0`
Total bathroom count. Requires `property_details`. Example: `3`
Upper bound of bedroom count for multi-unit listings. Requires `property_details`.
Lower bound of bedroom count for multi-unit listings. Requires `property_details`.
Upper bound of square footage for multi-unit listings. Requires `property_details`.
Lower bound of square footage for multi-unit listings. Requires `property_details`.
Garage type (e.g. `attached`, `detached`). Requires `property_details`.
Cooling system description. Requires `property_details`. Example: `Central Air`
Heating system description. Requires `property_details`. Example: `Forced Air`
Roofing material. Requires `property_details`. Example: `Composition`
Exterior material. Requires `property_details`. Example: `Stucco`
Construction material. Requires `property_details`. Example: `Wood Frame`
Architectural style. Requires `property_details`. Example: `Contemporary`
Pool features. Requires `property_details`. Example: `In Ground`
Fireplace features. Requires `property_details`. Example: `Gas`
Total room count. Requires `property_details`. Example: `8`
Number of units or unit type. Requires `property_details`.
Zoning designation. Requires `property_details`. Example: `R1`
FEMA flood zone designation(s), comma-separated. Requires `property_details`. Example: `X`
Local noise score. Requires `property_details`. Example: `42`
Noise source breakdown (e.g. traffic, airports). Requires `property_details`.
Flood Factor risk score 1–10. Requires `property_details`. Example: `2`
Flood Factor severity label. Requires `property_details`. Example: `Minimal`
Direction of change in flood risk over time. Requires `property_details`.
Short summary of the flood risk trend. Requires `property_details`.
Full paragraph describing the flood risk trend. Requires `property_details`.
Narrative flood insurance guidance. Requires `property_details`.
Whether flood insurance is required or recommended. Requires `property_details`.
Link to the First Street flood risk report. Requires `property_details`.
First Street flood risk record ID. Requires `property_details`.
Flood insurance quotes by provider. Requires `property_details`.
Environmental flood risk score (similar scale to flood\_factor\_score). Requires `property_details`.
Wildfire Factor risk score 1–10. Requires `property_details`. Example: `1`
Wildfire Factor severity label. Requires `property_details`. Example: `Minor`
Cumulative wildfire risk over the next 30 years. Requires `property_details`.
Short summary of the wildfire risk trend. Requires `property_details`.
Full paragraph describing the wildfire risk trend. Requires `property_details`.
Narrative wildfire insurance guidance. Requires `property_details`.
US Forest Service relative wildfire risk narrative. Requires `property_details`.
Link to the First Street wildfire risk report. Requires `property_details`.
First Street wildfire risk record ID. Requires `property_details`.
Wildfire insurance quotes by provider. Requires `property_details`.
Whether ownership is non-deeded (e.g. co-op share). Requires `property_details`.
Whether the property is fractionally owned. Requires `property_details`.
Whether the listed price excludes the land. Requires `property_details`.
Whether the property is USDA loan eligible. Requires `property_details`.
Whether the listing is a short sale. Requires `property_details`.
Whether the listing is an auction. Requires `property_details`.
Whether the property is part of a subdivision. Requires `property_details`.
Parsed street number. Requires `property_details`. Example: `123`
Parsed street name. Requires `property_details`. Example: `Main`
Parsed street suffix. Requires `property_details`. Example: `St`
Parsed street direction prefix. Requires `property_details`. Example: `N`
Parsed unit or apartment number. Requires `property_details`. Example: `4B`
Broader search areas (city/state/county) the listing belongs to. Requires `property_details`.
Local housing market heat badge for the postal code. Requires `property_details`. Example: `Hot`
Listing agent's state real estate license number. Requires `property_details`.
Agent's NRDS ID — a stable identifier for deduping the same agent across listings. Requires `property_details`.
Stable agent identifier. Requires `property_details`.
URL to the agent's Realtor.com profile. Requires `property_details`.
Agent's tagline or slogan. Requires `property_details`.
Agent's MLS set identifier. Requires `property_details`.
Agent's profile photo URL. Requires `property_details`.
Agent's business address. Requires `property_details`.
All agent phone numbers, typed (mobile, office, etc.) and flagged primary. Requires `property_details`.
Stable team identifier when the agent belongs to a team. Requires `property_details`.
Team name when the agent belongs to a team. Requires `property_details`.
Broker (brokerage company) name. Requires `property_details`.
Stable broker identifier. Requires `property_details`.
Broker logo image URL. Requires `property_details`.
Broker's brand accent color. Requires `property_details`.
Broker designations or certifications. Requires `property_details`.
Stable brokerage office identifier. Requires `property_details`.
Brokerage office name. Requires `property_details`.
Brokerage office contact email. Requires `property_details`.
URL to the brokerage office's Realtor.com profile. Requires `property_details`.
Brokerage office tagline or slogan. Requires `property_details`.
Brokerage office's MLS set identifier. Requires `property_details`.
Office rental or application URL, when available. Requires `property_details`.
Whether the office is outside the listing's community. Requires `property_details`.
Brokerage office business hours. Requires `property_details`.
Office's direct lead-contact email. Requires `property_details`.
Brokerage office photo or logo URL. Requires `property_details`.
Brokerage office's full street address. Requires `property_details`.
All brokerage office phone numbers, typed and flagged primary. Requires `property_details`.
## Code Examples
```bash cURL theme={null}
curl -X GET "https://api.lobstr.io/v1/results?squid=YOUR_SQUID_HASH&page=1&page_size=50" \
-H "Authorization: Token YOUR_API_KEY"
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
params = {
"squid": "YOUR_SQUID_HASH",
"page": 1,
"page_size": 50
}
all_results = []
url = f"{BASE_URL}/results"
while True:
response = requests.get(url, headers=headers, params=params)
data = response.json()
all_results.extend(data["data"])
print(f"Fetched page {data['page']} of {data['total_pages']}")
if data["next"] is None:
break
url = data["next"]
params = {}
print(f"\nTotal listings collected: {len(all_results)}")
for listing in all_results[:5]:
print(f"- {listing.get('full_address')} — ${listing.get('price', 0):,} ({listing.get('bed')}bd/{listing.get('bath')}ba)")
```
## Response
```json 200 theme={null}
{
"total_results": 120,
"limit": 50,
"page": 1,
"total_pages": 3,
"result_from": 1,
"result_to": 50,
"data": [
{
"id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"object": "result",
"squid": "YOUR_SQUID_HASH",
"run": "RUN_HASH",
"url": "https://www.realtor.com/realestateandhomes-detail/123-Main-St_Los-Angeles_CA_90001_M12345-67890",
"full_address": "123 Main St, Los Angeles, CA 90001",
"street": "123 Main St",
"city": "Los Angeles",
"state": "CA",
"county": "Los Angeles County",
"zip_code": "90001",
"status": "for_sale",
"price": 750000,
"sold_price": null,
"currency": "USD",
"bed": 3,
"bath": 2.0,
"house_size": 1850,
"acre_lot": 0.15,
"property_type": "single_family",
"is_new_construction": false,
"is_foreclosure": false,
"pending": false,
"brokered_by": "Keller Williams Realty",
"lat": 34.052235,
"lng": -118.243683,
"published_at": "2026-03-10",
"list_date": "2026-03-10",
"scraping_time": "2026-03-20T09:15:00.000Z"
},
{
"id": "b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5",
"object": "result",
"squid": "YOUR_SQUID_HASH",
"run": "RUN_HASH",
"url": "https://www.realtor.com/realestateandhomes-detail/15-E-30th-St-Apt-44C_New-York_NY_10016_M90774-92123",
"full_address": "15 E 30th St Apt 44C New York, NY 10016",
"street": "15 E 30th St Apt 44C",
"city": "New York",
"state": "NY",
"county": "New York",
"zip_code": "10016",
"status": "for_rent",
"price": 12800,
"sold_price": null,
"currency": "USD",
"bed": 1,
"bath": 1.5,
"house_size": 1100,
"acre_lot": null,
"property_type": "condos",
"is_new_construction": null,
"is_foreclosure": false,
"pending": false,
"brokered_by": "Keller Williams NYC",
"lat": 40.745763,
"lng": -73.984952,
"published_at": "2026-04-28",
"list_date": "2026-04-28",
"scraping_time": "2026-04-28T17:33:27.629Z"
}
],
"next": "https://api.lobstr.io/v1/results?squid=YOUR_SQUID_HASH&page=2&page_size=50",
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/realtor-iter-listings/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure settings for your Realtor Listings Scraper squid
Update the configuration of your **Realtor Listings Scraper** squid. Pass crawler-specific settings inside the `params` object.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Crawler-specific settings. See fields below.
## Settings Fields
Maximum number of listings to collect per task. Leave empty for unlimited.
Maximum number of unique results across all tasks in a run. Leave empty for unlimited.
Visit each listing detail page to collect the full photo gallery, agent and office details, description text, price/tax history, schools, spec sheet, risk scores, and more. Requires one additional request per listing.
Filter listings by one or more keywords, comma-separated (e.g. `pool, ocean view`). Only listings whose description contains at least one keyword are returned.
Only collect listings published after this point (based on `published_at`). Accepts a relative duration (e.g. `"24h"`, `"7d"`, `"2w"`) or an absolute date (`"YYYY-MM-DD HH:MM"`).
Timezone for interpreting an absolute `fetch_since` date (e.g. `"America/New_York"`). Only applies when `fetch_since` is an absolute date — ignored for relative values like `"24h"` or `"7d"`.
Set `fetch_since` to `null` to collect all listings, or use a relative duration (`"24h"`, `"7d"`, `"2w"`) or absolute date (`"YYYY-MM-DD HH:MM"`) to collect only recent listings. When using an absolute date, set `fetch_since_timezone` to interpret it in the correct timezone (e.g. `"America/New_York"`).
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Realtor California Listings",
"params": {
"max_results": 200,
"fetch_since": "7d",
"fetch_since_timezone": null
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_hash = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_hash}",
headers=headers,
json={
"name": "Realtor California Listings",
"params": {
"max_results": 200,
"fetch_since": "7d", # relative: "24h", "7d", "2w" | absolute: "2026-01-01 00:00:00"
"fetch_since_timezone": None # e.g. "America/New_York" — only used with absolute fetch_since
}
}
)
data = response.json()
print(f"Squid updated: {data['name']}")
```
## Response
```json 201 theme={null}
{
"id": "YOUR_SQUID_HASH",
"name": "Realtor California Listings",
"crawler": {
"id": "f388a9866f943bc5c29bde8b33587bd3",
"name": "Realtor Iter Listings",
"slug": "realtor-iter-listings"
},
"params": {
"max_results": 200,
"fetch_since": "7d",
"fetch_since_timezone": null
},
"concurrency": 1,
"export_unique_results": true,
"to_complete": true,
"no_line_breaks": false,
"status": "idle",
"created_at": "2025-01-20T10:15:00.000000",
"updated_at": "2025-01-27T14:35:00.000000"
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/reddit-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add Reddit URLs to scrape posts, comments, user profiles, or subreddits
Add Reddit URLs to collect posts, comments, user profiles, or subreddit metadata. The scraper handles post threads (with nested comments), subreddit feeds, user profile pages, and global or subreddit-scoped search results.
Crawler ID: `6f99262f742b533d96936bf4088fba3e`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the Reddit Scraper crawler |
| **tasks** | array | Yes | Array of task objects, each containing a `url` field |
## Task Object
| Field | Type | Required | Description |
| - | - | - | - |
| **url** | string | Yes | Reddit URL to scrape — see supported URL types below |
## Supported URL Types
| Type | Example |
| - | - |
| Post thread | `https://www.reddit.com/r/Bitcoin/comments/1rcbgsa/crypto_beginners/` |
| Subreddit | `https://www.reddit.com/r/Bitcoin/` |
| User profile | `https://www.reddit.com/user/thisisbillgates/` |
| Global search | `https://www.reddit.com/search/?q=bitcoin` |
| Subreddit search | `https://www.reddit.com/r/Bitcoin/search/?q=lightning` |
For post URLs, the scraper returns one row for the post itself and one row per comment. Use `skip_comments` or `skip_posts` in settings to limit output to just one type.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{
"url": "https://www.reddit.com/r/Bitcoin/"
}
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
payload = {
"squid": squid_id,
"tasks": [
{"url": "https://www.reddit.com/r/Bitcoin/"},
{"url": "https://www.reddit.com/r/Bitcoin/comments/1rcbgsa/crypto_beginners/"},
{"url": "https://www.reddit.com/user/thisisbillgates/"}
]
}
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json=payload
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates skipped: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"created_at": "2026-05-20T10:00:00.000000",
"is_active": true,
"params": {
"url": "https://www.reddit.com/r/Bitcoin/"
},
"module": 118,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/reddit-scraper/credit-cost
Credit cost for the Reddit Scraper
1 credit per result
# Get Results
Source: https://docs.lobstr.io/examples/reddit-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Reddit Scraper
Retrieve scraped data from your **Reddit Scraper** runs. Each result row represents a post, comment, user profile, or subreddit — indicated by the `type` field.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Row type: `post` for the post itself, `comment` for a comment, `user` for a user profile, `subreddit` for subreddit metadata. Example: `post`
Canonical URL of the Reddit post. Example: `https://www.reddit.com/r/Bitcoin/comments/1rcbgsa/crypto_beginners/`
Reddit post ID (base36 identifier). Example: `1rcbgsa`
Title of the Reddit post. Example: `Crypto beginners guide`
Text body of the post (for text posts) or comment text (for comment rows). Example: `Here's everything you need to know as a beginner.`
Type of post: `text`, `image`, `link`, `video`, etc. Example: `text`
Upvote score of the post or comment. Example: `1842`
Number of comments on the post. Populated for `type='post'` rows. Example: `126`
Number of awards received by the post. Example: `3`
Username of the post or comment author. Example: `Independent_Lynx715`
Reddit ID of the author. Example: `t2_19xe8ly1c0`
Name of the subreddit (without prefix). Example: `Bitcoin`
Subreddit name with `r/` prefix. Example: `r/Bitcoin`
Reddit ID of the subreddit. Example: `t5_3oxtd`
Post flair label (if any). Example: `Discussion`
Domain of the post content. `self.xxx` for text posts, or the external domain for link posts. Example: `self.Bitcoin`
Detected language of the post (ISO 639-1). Example: `en`
UTC timestamp when the post or comment was created. Example: `2026-04-23T11:16:27`
Reddit comment ID (base36). Populated for `type='comment'` rows only. Example: `ohsv4v5`
Parent comment ID for nested replies. Populated for replies; null for top-level comments and post rows. Example: `ohsv4v5`
Comment nesting depth (0 = top-level comment). Null for post rows. Example: `0`
Total karma of the user. Populated for `type='user'` rows only. Example: `87`
Post karma of the user. Populated for `type='user'` rows only. Example: `17`
Comment karma of the user. Populated for `type='user'` rows only. Example: `70`
Number of contributions by the user. Populated for `type='user'` rows only. Example: `7`
JSON array of trophy names earned by the user. Populated for `type='user'` rows only. Example: `["Five-Year Club"]`
JSON array of subreddits the user is active in (prefixed). Populated for `type='user'` rows only. Example: `["r/Bitcoin", "r/PostCardExchange"]`
JSON array of subreddits the user moderates (prefixed). Populated for `type='user'` rows only. Example: `["r/belikeme"]`
Description of the subreddit. Populated for `type='subreddit'` rows only. Example: `A community dedicated to Bitcoin.`
Number of weekly active users in the subreddit. Populated for `type='subreddit'` rows only. Example: `1208799`
Number of weekly contributions (posts + comments) in the subreddit. Populated for `type='subreddit'` rows only. Example: `18683`
JSON array of subreddit rules, each with `number`, `title`, and `description`. Populated for `type='subreddit'` rows only. Example: `[{"number": "1", "title": "Be civil", "description": "..."}]`
JSON array of community resource links, each with `text` and `url`. Populated for `type='subreddit'` rows only. Example: `[{"text": "Wiki", "url": "https://www.reddit.com/r/Bitcoin/wiki/"}]`
Ratio of upvotes to total votes (0.0–1.0). Populated for post rows. Example: `0.97`
Whether the post has been locked by moderators (no new comments allowed). Example: `false`
Whether the post is archived (older than 6 months; no new votes or comments allowed). Example: `false`
Whether the post is stickied (pinned) by a moderator. Example: `false`
Whether the post is marked as NSFW (18+). Example: `false`
Whether the post is marked as a spoiler. Example: `false`
Whether the post is a native Reddit video. Example: `false`
Whether the post contains a gallery of images. Example: `false`
Direct URL of the post's media (video or external image). Null for text and self posts.
Preview thumbnail URL for image and video posts. Null for text posts.
HTML-rendered body of the post. Populated only for direct post URL scrapes.
Character count of the plain-text post body. `0` for posts with no body (image, video, link). Example: `342`
HTML-rendered body of the comment. Null for non-comment rows.
Age of the post in hours at scraping time, derived from `created_at`. Example: `18.4`
Post score divided by age in hours — measures engagement velocity. Example: `245.3`
`comment_count` divided by `max(score, 1)`. High values indicate discussion-heavy posts. Example: `0.08`
`true` if `score_per_hour > 50` or `comment_to_score_ratio > 0.1`. Example: `true`
Whether the post was made with special authority: `moderator`, `admin`, or null. Example: `null`
Whether the post is a paid advertisement (sponsored/promoted). Example: `false`
Whether the post is a text/self post (no external link). Example: `true`
Reddit short URL for the post (`https://redd.it/{post_id}`). Example: `https://redd.it/1rcbgsa`
Whether the post or comment has been edited after submission. Example: `false`
ISO timestamp of when the post was last edited. Null if never edited.
Number of times this post has been crossposted to other subreddits. Example: `3`
The post author's flair text in the subreddit at the time of posting. Example: `OG Member`
Whether the post or comment author has Reddit Premium. Example: `false`
Number of times this post has been gilded (awarded Reddit Gold). Example: `0`
Whether the post was marked as Original Content (OC) by the author. Example: `false`
Number of subscribers in the subreddit at scraping time. Example: `7234891`
The `post_id` of the original post if this is a crosspost. Null otherwise.
Sort order suggested by the subreddit moderators for this post's comments. Example: `top`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 81473,
"object": "result",
"squid": "23d48753dff0014766ec0db16c053cd1",
"run": "3a9ec8b1a9662d20fff061f98e5dc26b",
"type": "post",
"url": "https://www.reddit.com/r/developpeurs/comments/1stfrij/pourquoi_y_atil_si_peu_de_femmes_en_informatique/",
"post_id": "1stfrij",
"title": "Pourquoi y a-t-il si peu de femmes en informatique ?",
"body": "Je bosse dans une ESN, ~1000 personnes. On est facilement à 90% d'hommes dans les équipes tech.",
"post_type": "text",
"score": 19,
"comment_count": 126,
"award_count": 0,
"author": "Independent_Lynx715",
"author_id": "t2_19xe8ly1c0",
"subreddit": "developpeurs",
"subreddit_prefixed_name": "r/developpeurs",
"subreddit_id": "t5_3oxtd",
"flair": "Carrière",
"domain": "self.developpeurs",
"language": "fr",
"created_at": "2026-04-23T11:16:27",
"comment_id": "ohsv4v5",
"parent_id": "ohsv4v5",
"depth": 0,
"karma": 87,
"post_karma": 17,
"comment_karma": 70,
"contributions": 7,
"trophies": "[\"Five-Year Club\"]",
"active_subreddits": "[\"r/Bitcoin\", \"r/PostCardExchange\"]",
"moderated_subreddits": "[\"r/belikeme\"]",
"subreddit_description": "A community dedicated to sharing...",
"weekly_active_users": 1208799,
"weekly_contributions": 18683,
"subreddit_rules": "[{\"number\": \"1\", \"title\": \"Be civil\", \"description\": \"...\"}]",
"subreddit_resources": "[{\"text\": \"Wiki\", \"url\": \"https://www.reddit.com/r/example/wiki/\"}]",
"upvote_ratio": 0.95,
"locked": false,
"archived": false,
"stickied": false,
"over_18": false,
"spoiler": false,
"is_video": false,
"is_gallery": false,
"media_url": "https://v.redd.it/abtj8w6xf7ah1",
"thumbnail": "https://external-preview.redd.it/example.png",
"body_html": "Post body as HTML
",
"body_length": 142,
"comment_body_html": "Great point, thanks for sharing!
",
"age_hours": 3.75,
"score_per_hour": 127.4,
"comment_to_score_ratio": 0.312,
"is_high_engagement": true,
"distinguished_as": "moderator",
"is_promoted": false,
"is_self": true,
"shortlink": "https://redd.it/abc123",
"edited": false,
"edited_at": "2026-01-15T10:30:00",
"num_crossposts": 3,
"author_flair": "Top Contributor",
"author_premium": false,
"gilded": 0,
"is_original_content": false,
"subreddit_subscribers": 1250000,
"crosspost_parent_id": "xyz789",
"suggested_sort": "top",
"functions": null,
"native_id": 81473
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/reddit-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Reddit Scraper settings and filters
Configure your Reddit Scraper squid settings. Control sort order per input type, filter by date, limit results, and choose whether to include posts, comments, or both.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_results** | integer | unlimited | Maximum number of rows (posts + comments) to collect per task |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the run |
| **fetch\_since** | string | null | Stop collecting content older than this threshold. The task ends at the first older post, so use it with `sort_subreddit` set to `new`. Use a relative duration (`24h`, `7d`, `2w`) or absolute date (`YYYY-MM-DD HH:MM:SS`) |
| **fetch\_since\_timezone** | string | null | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Ignored for relative values |
| **sort\_comments** | string | `best` | Sort order for post thread comments: `best`, `top`, `new`, `controversial`, `old`, `q&a` |
| **sort\_search** | string | `relevance` | Sort order for search results: `relevance`, `hot`, `top`, `new`, `comments`. With `relevance`, `top` or `comments`, the time window is set by `sort_period` |
| **sort\_subreddit** | string | `hot` | Sort order for subreddit feeds: `hot`, `new`, `top`, `rising`, `controversial`. With `top` and `controversial`, the time window is set by `sort_period` |
| **sort\_period** | string | `all` | Time window of the ranking: `all`, `year`, `month`, `week`, `day`, `hour`. Applies to subreddit feeds sorted by `top` or `controversial`, and to searches sorted by `relevance`, `top` or `comments`. A `t` already in the task URL (e.g. `https://www.reddit.com/r/Bitcoin/top/?t=year`) wins |
| **include\_nsfw** | boolean | `false` | Include NSFW (adult) posts and comments in results |
| **skip\_comments** | boolean | `false` | Return only post rows — skip all comments |
| **skip\_posts** | boolean | `false` | Skip post rows. For post URLs: returns comments only. For user URLs: returns profile and comments. For subreddit URLs: returns subreddit metadata only |
| **max\_depth** | integer | unlimited | Maximum nesting depth of comments to collect. `0` = top-level comments only, `1` = top-level + first replies, etc. Leave empty for full thread |
| **keyword** | string | null | Search keyword. Automatically constructs a Reddit search URL for the given keyword and subreddit(s) — no need to manually craft search URLs |
| **post\_type** | string | `any` | Filter search results by post type: `any`, `image`, `video`. Wired to Reddit's real media tabs; other values (previously `link`, `self`, `richvideo`) are not accepted by Reddit's search and have been removed. Only applies to search URLs and keyword searches |
| **search\_comments** | boolean | false | Search within comment bodies instead of post titles. Only applies to search URLs and keyword searches |
## Squid Settings
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
The `sort_comments`, `sort_search`, and `sort_subreddit` parameters are each applied only when the input URL matches the corresponding type — they do not conflict with each other.
`fetch_since` filters based on the `created_at` field of each post or comment. It is useful for incremental runs to avoid re-collecting old content.
Reddit serves about 1,000 posts per feed at most (new, top, controversial, search). On a busy subreddit, `new` only reaches back a few weeks. To go back further, add the same subreddit several times with different sorts and periods in the URL, plus keyword searches scoped to it, then dedupe on `post_id`.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Reddit Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 500,
"fetch_since": "7d",
"sort_subreddit": "hot",
"sort_comments": "top",
"skip_comments": false,
"skip_posts": false,
"include_nsfw": false
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Reddit Scraper (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_results": 500,
"fetch_since": "7d",
"sort_subreddit": "hot",
"sort_comments": "top",
"skip_comments": False,
"skip_posts": False,
"include_nsfw": False
}
}
)
data = response.json()
print(f"Settings updated: {data['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Reddit Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 500,
"fetch_since": "7d",
"sort_subreddit": "hot",
"sort_comments": "top",
"skip_comments": false,
"skip_posts": false,
"include_nsfw": false
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/sales-nav-profile-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Sales Navigator Profile Scraper squid
Add URLs or inputs to your **Sales Navigator Profile Scraper** squid. Each task object must include the required fields below.
Crawler ID: `40d08f9bfec4a8775bb5586ce7b33a35`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task supports the fields below.
## Task Fields
# Credit Cost
Source: https://docs.lobstr.io/examples/sales-nav-profile-scraper/credit-cost
Credit cost for the Sales Navigator Profile Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Profiles | 1 | 1 credit per profile. |
| Email Enrichment | 9 | 9 credits per profile enriched. No email = 0 credits. |
| Phone Enrichment | 300 | 300 credits per profile enriched. No phone number = 0 credits. |
# Get Results
Source: https://docs.lobstr.io/examples/sales-nav-profile-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Sales Navigator Profile Scraper
Retrieve scraped data from your **Sales Navigator Profile Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Sales Navigator profile ID. Example: `ACwAAAGHtboB_SK60RCbrgLUstRVuTcNlzAHfPU`
LinkedIn public ID (slug). Example: `danadelstein`
First name. Example: `Daniel (Dan)`
Last name. Example: `Adelstein`
Full name. Example: `Daniel (Dan) Adelstein`
Profile headline. Example: `Senior Vice President of International Development at Xponential Fitness (NYSE:XPOF)`
Current job title. Example: `Senior Vice President of International Development`
Current company name. Example: `Xponential Fitness`
Current company LinkedIn URL. Example: `https://www.linkedin.com/company/19193147/`
Profile location. Example: `Lake Worth, Florida, United States`
Email address found or enriched for this person. Example: `danieladelstein@yahoo.com`
Email status. Example: `valid`
Mobile phone number. Example: `+1-555-000-0000`
LinkedIn public profile URL. Example: `https://www.linkedin.com/in/danadelstein`
LinkedIn Sales Navigator profile URL. Example: `https://www.linkedin.com/sales/people/ACwAAAGHtboB_SK60RCbrgLUstRVuTcNlzAHfPU,NAME_SEARCH,3tl8`
Profile picture URL. Example: `https://media.licdn.com/dms/image/C4E03AQFelTC96_eCyQ/profile-displayphoto-shrink_100_100/0/1649968936543`
Profile background picture URL. Example: `https://media.licdn.com/dms/image/C4E16AQGSyK_L6GSwng/profile-displaybackgroundimage-shrink_200_800/0/1648546335745`
Profile summary / about section. Example: `Founded in 2017 and headquartered in Irvine, California...`
Current position details. Example: `{'companyName': 'Xponential Fitness', 'title': 'Senior Vice President of International Development', 'companyUrn': 'urn:li:fs_salesCompany:19193147', 'current': True, 'location': 'Irvine, CA.', 'startedOn': {'year': 2022, 'month': 3}, 'endedOn': {}}`
Most recent past job title. Example: `Associate Vice President of Franchise Development`
Most recent past company name. Example: `Mathnasium - The Math Learning Center`
All work positions / experience. Example: `[]`
Most recent school name. Example: `University of Florida`
Most recent school LinkedIn URL. Example: `https://www.linkedin.com/school/uflorida/`
Education history. Example: `[]`
Skills and endorsement counts. Example: `[]`
Languages spoken. Example: `[]`
Volunteering experience entries. Example: `[]`
Connection degree (1, 2, or 3). Example: `2`
Number of connections. Example: `7869`
Number of shared connections with the scraping account. Example: `2`
Mutual connections between you and this profile. Example: `[]`
Recent posts and comments (last 90 days) with text, reactions, comments count. Example: `[]`
Spotlight badges (mutual connections, recent posts, etc.). Example: `[{'id': 'SECOND_DEGREE_CONNECTION', 'displayValue': '2 mutual connections'}]`
Companies, schools and groups this person follows (up to 10). Example: `[]`
Total number of entities this person follows. Example: `608`
Type of last interaction with this profile. Example: `VIEW_PROFILE`
Timestamp (ms) of last interaction with this profile. Example: `1687496301805`
Whether the profile has OpenLink enabled. Example: `false`
Whether the profile has LinkedIn Premium. Example: `false`
Whether there is a pending connection invitation. Example: `false`
Whether the lead is saved in Sales Navigator. Example: `false`
Whether the profile has been viewed. Example: `true`
Whether the profile is unlocked in Sales Navigator. Example: `false`
Full name pronunciation audio metadata. Example: `{}`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 97477,
"object": "result",
"squid": "1743a4c88b8c165f5759d466dd4e5ec0",
"run": "85cc34770298b4c48dd97b79778c2701",
"profile_id": "ACwAAAGHtboB_SK60RCbrgLUstRVuTcNlzAHfPU",
"public_id": "danadelstein",
"first_name": "Daniel (Dan)",
"last_name": "Adelstein",
"full_name": "Daniel (Dan) Adelstein",
"headline": "Senior Vice President of International Development at Xponential Fitness (NYSE:XPOF)",
"job_title": "Senior Vice President of International Development",
"company_name": "Xponential Fitness",
"current_company_url": "https://www.linkedin.com/company/19193147/",
"location": "Lake Worth, Florida, United States",
"email": "danieladelstein@yahoo.com",
"email_status": "valid",
"mobile_phone": "+1-555-000-0000",
"public_url": "https://www.linkedin.com/in/danadelstein",
"sales_navigator_url": "https://www.linkedin.com/sales/people/ACwAAAGHtboB_SK60RCbrgLUstRVuTcNlzAHfPU,NAME_SEARCH,3tl8",
"profile_picture_url": "https://media.licdn.com/dms/image/C4E03AQFelTC96_eCyQ/profile-displayphoto-shrink_100_100/0/1649968936543",
"profile_background_picture_url": "https://media.licdn.com/dms/image/C4E16AQGSyK_L6GSwng/profile-displaybackgroundimage-shrink_200_800/0/1648546335745",
"summary": "Founded in 2017 and headquartered in Irvine, California...",
"current_position": {
"companyName": "Xponential Fitness",
"title": "Senior Vice President of International Development",
"companyUrn": "urn:li:fs_salesCompany:19193147",
"current": true,
"location": "Irvine, CA.",
"startedOn": {
"year": 2022,
"month": 3
},
"endedOn": {}
},
"past_job": "Associate Vice President of Franchise Development",
"past_company_name": "Mathnasium - The Math Learning Center",
"positions": [],
"past_school": "University of Florida",
"past_school_url": "https://www.linkedin.com/school/uflorida/",
"educations": [],
"skills": [],
"languages": [],
"volunteering_experiences": [],
"connection_type": 2,
"num_of_connections": 7869,
"num_of_shared_connections": 2,
"shared_connections": [],
"recent_posts": [],
"spotlight_badges": [
{
"id": "SECOND_DEGREE_CONNECTION",
"displayValue": "2 mutual connections"
}
],
"following": [],
"following_count": 608,
"last_interaction_type": "VIEW_PROFILE",
"last_interaction_time": 1687496301805,
"open_link": false,
"premium": false,
"pending_invitation": false,
"saved": false,
"viewed": true,
"unlocked": false,
"full_name_pronunciation_audio": {},
"functions": null,
"native_id": 97477
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/sales-nav-profile-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Sales Navigator Profile Scraper settings
Configure your Sales Navigator Profile Scraper squid settings. Enable email and mobile enrichment to find contact details for the profiles you scrape.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Optional Functions
Enable these in the `params.functions` object:
| Function | Type | Default | Description |
| - | - | - | - |
| **email\_enrichment** | boolean | true | Find email addresses for each profile (9 credits per profile where an email is found) |
| **mobile\_enrichment** | boolean | false | Find mobile phone numbers for each profile (300 credits per profile where a mobile number is found) |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **accounts** | array | Array of linked Sales Navigator account hashes (required) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
`email_enrichment` is enabled by default and costs 9 credits per profile where an email is found. Disable it if you don't need email data.
`mobile_enrichment` costs 300 credits per profile where a mobile number is found. Only enable when mobile numbers are specifically required.
This scraper requires a synced Sales Navigator account. Add your LinkedIn Sales Navigator cookies in the Accounts section before running.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Sales Nav Profile Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"functions": {
"email_enrichment": true,
"mobile_enrichment": false
}
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Sales Nav Profile Scraper (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"functions": {
"email_enrichment": True, # 9 credits per profile with email
"mobile_enrichment": False # 300 credits per profile with mobile
}
}
}
)
data = response.json()
print(f"Settings updated: {data['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Sales Nav Profile Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"functions": {
"email_enrichment": true,
"mobile_enrichment": false
}
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/sales-navigator-companies-scraper/add-tasks
POST https://api.lobstr.io/v2/squid/{squid_id}/task
Add Sales Navigator company search URLs to scrape using the lobstr.io API
Add Sales Navigator company search URLs as tasks to your squid. The scraper will export all companies matching your search filters.
Crawler ID: `6b66cba236b64604581864230e1f4d36`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## URL Format
The scraper accepts three types of Sales Navigator company URLs:
* **Search URL** — a filtered company search: `https://www.linkedin.com/sales/search/company?query=(keywords:technology)`
* **Custom list URL** — a saved company list: `https://www.linkedin.com/sales/lists/company/YOUR_LIST_ID`
* **All Saved Accounts dashboard** — your full saved accounts list: `https://www.linkedin.com/sales/accounts/dashboard`
Build your search or open a saved list in Sales Navigator, then copy the URL from your browser.
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **url** | string | Yes | Sales Navigator company search URL, custom list URL, or All Saved Accounts dashboard URL |
Build your search in Sales Navigator first, apply all filters, then copy the URL to ensure accurate results.
This scraper requires a linked Sales Navigator account. Connect your account in lobstr.io settings first.
Each search URL can return up to 2,500 companies (100 pages × 25 results per page).
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/api/v2/squid/YOUR_SQUID_ID/task" \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.linkedin.com/sales/search/company?query=(keywords:technology)"
}'
```
```python Python theme={null}
import requests
API_TOKEN = "YOUR_API_TOKEN"
SQUID_ID = "YOUR_SQUID_ID"
url = f"https://api.lobstr.io/api/v2/squid/{SQUID_ID}/task"
headers = {
"Authorization": f"Token {API_TOKEN}",
"Content-Type": "application/json"
}
data = {
"url": "https://www.linkedin.com/sales/search/company?query=(keywords:technology)"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
```
## Response
```json 200 theme={null}
{
"id": "task_abc123def456",
"status": "pending",
"created_at": "2025-01-15T10:30:00Z",
"url": "https://www.linkedin.com/sales/search/company?query=(keywords:technology)"
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/sales-navigator-companies-scraper/credit-cost
Credit cost for the Sales Navigator Companies Scraper
1 credit per company.
# Get Results
Source: https://docs.lobstr.io/examples/sales-navigator-companies-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Sales Navigator Companies Scraper
Retrieve scraped data from your **Sales Navigator Companies Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Name of the company as listed on LinkedIn Sales Navigator. Example: `Tesla`
Unique LinkedIn identifier for the company. Example: `15564`
LinkedIn company page URL. Example: `https://www.linkedin.com/sales/company/15564`
URL of the company's LinkedIn logo or profile image. Example: `https://media.licdn.com/dms/image/v2/C4D0BAQHUcu98SZ2TVw/company-logo_400_400/company-logo_400_400/0/1630576446368/tesla_motors_logo?e=1775692800&v=beta&t=Us0zonMvyG5zEfLxKeZlk6JOmvV8tGtBIyHjJdWmBUc`
Company description from the LinkedIn company page. Example: \`Tesla is accelerating the world’s transition to sustainable abundance. To achieve our mission, we’re building a world powered by solar, enabled by battery storage and transported by electric vehicles.
We’re committed to hiring and developing top talent from around the world for any given discipline. Headquartered in Texas, we operate six huge, vertically integrated factories across three continents. With over 100,000 employees, our teams take a first-principles approach to designing, building, selling and servicing our products in-house.
Our world-class teams operate with a non-conventional philosophy of inter-disciplinary collaboration. Each member of the team is expected to challenge and to be challenged, to create, and to innovate. We’re tackling the world’s most difficult and important problems—and we wouldn’t succeed without our shared passion for making the world a better place.\`
Company size by number of employees (e.g. 51–200, 1001–5000). Example: `10,001+ employees`
Employee count as displayed on the LinkedIn company page. Example: `83K+`
Industry the company operates in. Example: `Motor Vehicle Manufacturing`
Whether the company is saved as a lead in LinkedIn Sales Navigator. Example: `false`
### Detail Fields
The following fields require `get_details: true` in settings.
Clean apex domain of the company's own website, lowercased. Example: `tesla.com`
The company's own website URL, exactly as listed on LinkedIn. Example: `https://www.tesla.com`
LinkedIn company page URL built on the company slug. Example: `https://www.linkedin.com/company/tesla-motors`
Exact number of employees listed on LinkedIn. Example: `127855`
Year the company was founded. Example: `2003`
Comma-separated list of the company's specialties. Example: `Electric Vehicles, Clean Energy, Battery Storage`
Company type, e.g. Public Company, Privately Held, Nonprofit. Example: `Public Company`
Estimated yearly revenue range. Example: `$10+ billion`
Location of the company headquarters. Example: `Austin, Texas, United States`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 63495,
"object": "result",
"squid": "2e19b66a056aec983418220364b539ef",
"run": "21d1e616d4d6527ea11b0d13fbc5e96a",
"company_name": "Tesla",
"company_id": 15564,
"company_url": "https://www.linkedin.com/sales/company/15564",
"company_picture": "https://media.licdn.com/dms/image/v2/C4D0BAQHUcu98SZ2TVw/company-logo_400_400/company-logo_400_400/0/1630576446368/tesla_motors_logo?e=1775692800&v=beta&t=Us0zonMvyG5zEfLxKeZlk6JOmvV8tGtBIyHjJdWmBUc",
"description": "Tesla is accelerating the world’s transition to sustainable abundance. To achieve our mission, we’re building a world powered by solar, enabled by battery storage and transported by electric vehicles.\n \nWe’re committed to hiring and developing top talent from around the world for any given discipline. Headquartered in Texas, we operate six huge, vertically integrated factories across three continents. With over 100,000 employees, our teams take a first-principles approach to designing, building, selling and servicing our products in-house.\n \nOur world-class teams operate with a non-conventional philosophy of inter-disciplinary collaboration. Each member of the team is expected to challenge and to be challenged, to create, and to innovate. We’re tackling the world’s most difficult and important problems—and we wouldn’t succeed without our shared passion for making the world a better place.",
"employee_count_range": "10,001+ employees",
"employee_display_count": "83K+",
"industry": "Motor Vehicle Manufacturing",
"is_saved": false,
"functions": null,
"native_id": 63495
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/sales-navigator-companies-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Sales Navigator Companies Scraper settings
Configure your Sales Navigator Companies Scraper squid settings. Control pagination depth and result limits.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_pages** | integer | 100 | Maximum number of search result pages to scrape (max: 100) |
| **max\_results** | integer | unlimited | Maximum companies to collect per task (max: 5000) |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the run |
| **get\_details** | boolean | false | Collect extra details for each company: website, domain, LinkedIn page URL, exact employee count, founded year, specialties, company type, revenue range, and headquarters location |
Setting `get_details: true` enables additional company detail fields in results.
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
## Pagination
Sales Navigator displays 25 companies per page. With `max_pages` set to 100 (default), you can collect up to 2,500 companies per search URL.
For larger datasets, use multiple search URLs with different filters.
Set `max_pages` to a lower value if you only need companies from the first few pages of results.
Credits are charged per company collected (1 credit per company).
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Sales Navigator Companies Scraper (1)",
"concurrency": 5,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_pages": 50,
"max_results": 1000,
"get_details": false
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Update squid settings
payload = {
"name": "Sales Navigator Companies Scraper (1)",
"concurrency": 5,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_pages": 50,
"max_results": 1000,
"get_details": False
}
}
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json=payload
)
print(f"Settings updated: {response.json()['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Sales Navigator Companies Scraper (1)",
"concurrency": 5,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_pages": 50,
"max_results": 1000,
"get_details": false
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/sales-navigator-leads-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add LinkedIn Sales Navigator search URLs to scrape lead profiles
Add LinkedIn Sales Navigator search URLs to scrape lead profiles. This scraper requires a linked Sales Navigator account to access the data.
Copy the search URL directly from Sales Navigator after applying your filters (company size, seniority level, industry, location, etc.). The scraper will paginate through the search results automatically.
Crawler ID: `a1d243d3824a1ac773414416eb80362d`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the Sales Navigator Leads Scraper crawler |
| **tasks** | array | Yes | Array of task objects, each containing a `url` field |
## Task Object
| Field | Type | Required | Description |
| - | - | - | - |
| **url** | string | Yes | Sales Navigator people search URL (e.g., `https://www.linkedin.com/sales/search/people?query=...`) |
Apply filters in Sales Navigator first, then copy the URL. All filter parameters will be preserved.
This scraper requires a linked Sales Navigator account. Ensure your account is properly connected before running.
You can use saved searches in Sales Navigator and copy their URLs as tasks.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{
"url": "https://www.linkedin.com/sales/search/people?query=(filters:List((type:SENIORITY_LEVEL,values:List((id:300,text:Vice%20President)))))"
}
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Add Sales Navigator search URLs
# Copy the URL directly from Sales Navigator after applying filters
payload = {
"squid": squid_id,
"tasks": [
{
"url": "https://www.linkedin.com/sales/search/people?query=(filters:List((type:SENIORITY_LEVEL,values:List((id:300,text:Vice%20President)))))"
}
]
}
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json=payload
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates skipped: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "1995ef75ed06f21b514298b31caa8139",
"created_at": "2025-07-07T10:04:54.651445",
"is_active": true,
"params": {
"url": "https://www.linkedin.com/sales/search/people?query=(filters:List((type:SENIORITY_LEVEL,values:List((id:300,text:Vice%20President)))))"
},
"module": 2,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/sales-navigator-leads-scraper/credit-cost
Credit cost for the Sales Navigator Leads Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Leads | 1 | 1 credit per profile. |
| Email Enrichment | 9 | 9 credits per profile enriched. No email = 0 credits. |
| Phone Enrichment | 300 | 300 credits per profile enriched. No phone number = 0 credits. |
| Get Profile Details | 1 | 1 credit per profile |
# Get Results
Source: https://docs.lobstr.io/examples/sales-navigator-leads-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Sales Navigator Leads Scraper
Retrieve scraped data from your **Sales Navigator Leads Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object represents one person. Most fields are populated directly from the Sales Navigator search results; `positions`, `education`, `websites`, and `company` are nested groups only populated when the `get_profile_details` enrichment function is enabled on the squid.
Unique internal identifier for the record. Example: `21e281488adf43086782b731d9c19e0b`
Date and time this record was scraped. Example: `2026-03-19 10:36:09.000000+00`
Name of the company this person works at. Example: `Gugin - Creating Winning Corporate Cultures and culturally intelligent leaders`
LinkedIn unique identifier for the company. Example: `796142`
Email address found or enriched for this person. Example: `fm@gugin.com`
Validation status of the email address (e.g. valid, risky, invalid). Example: `valid`
Mobile phone number found or enriched for this person
First name of the LinkedIn member. Example: `Dr. Finn`
Last name of the LinkedIn member. Example: `Majlergaard`
Location as shown on the LinkedIn profile. Example: `Greater Nice Metropolitan Area`
Position of this person in the Sales Navigator search results. Example: `Founder and CEO`
Number of years the person has been in their current role. Example: `22`
Number of years the person has been at their current company. Example: `22`
Number of months the person has been in their current role. Example: `10`
URL to the person's LinkedIn Sales Navigator profile. Example: `https://www.linkedin.com/sales/people/ACwAAAAFQjgBtNxy28alABzs_jj2meNVjFO0AUs,NAME_SEARCH,nwRo`
URL of the person's LinkedIn profile picture. Example: `https://media.licdn.com/dms/image/v2/D4D03AQEwqlTdXSN6Rg/profile-displayphoto-shrink_800_800/B4DZQ7HXczHUAo-/0/1736158574857?e=1762387200&v=beta&t=4l7DbJzZ1VDT8WePPQDs99CHAFe-Y34zzihrZehJEIw`
Start date of the person's current position. Example: `2002-11-30 23:00:00+00`
Industry the person works in. Example: `Higher Education`
Professional headline shown on the LinkedIn profile. Example: `Author of: The Dangerous AI Gamble in Education🍀 I/we help organisations develop winning company culture 🍀 I/we Gugin train leaders to become culturally and emotionally intelligent 🍀Professor 🍀 keynote speaker`
About or summary text from the LinkedIn profile. Example: \`Founder and CEO @ Gugin | Creating Winning Corporate Cultures
I am the person you come to when your organisation is falling apart because of a toxic workplace culture. Our Gugin team have saved organisations (and leaders) for more than 20 years.
I am the person you come to when you need a zip to tie two organisations together after a merger or acquisition
I am the person you come to when you want a really thought-provoking speech on leadership for your next event or conference.\`
Number of LinkedIn connections. Example: `500`
URL to the person's public LinkedIn profile. Example: `https://www.linkedin.com/in/ACwAAAAFQjgBtNxy28alABzs_jj2meNVjFO0AUs`
Whether the person has indicated they are open to new opportunities. Example: `false`
Whether the person has the LinkedIn Open To Work badge enabled. Example: `false`
URL to the person's Twitter/X profile, if linked on their LinkedIn profile. Example: `https://twitter.com/example`
Unique LinkedIn Sales Navigator identifier for this person. Example: `344632`
Degree of connection between this person and the scraping account (1st, 2nd, 3rd). Example: `2nd`
Industry sector of the company this person works at. Example: `Business Consulting and Services`
Whether the profile has LinkedIn OpenLink enabled (accepts InMail from anyone). Example: `false`
Whether this lead is saved in LinkedIn Sales Navigator. Example: `false`
Whether this person has LinkedIn Premium. Example: `false`
Whether this result matched all the applied Sales Navigator search filters. Example: `true`
Reason this result did not match the applied Sales Navigator filters
Seniority level of the person's current position (e.g. Director, Manager, Entry). Example: `CXO, Senior`
Whether the person has been in their current position for fewer than 3 months. Example: `false`
Whether a LinkedIn connection invitation is pending from the scraping account to this person. Example: `false`
Full text of the job description for the person's current role. Requires `get_profile_details`.
URL of the person's LinkedIn profile banner/background image. Requires `get_profile_details`.
Work history. Requires `get_profile_details`.
Unique identifier for this position. Example: `344632796142`
Whether this is a newly added position. Example: `false`
Whether this is the current active position. Example: `true`
Company name for this position. Example: `Gugin - Creating Winning Corporate Cultures and culturally intelligent leaders`
LinkedIn company identifier for this position. Example: `796142`
Description of responsibilities in this position
Location of this position. Example: `Nice, Provence-Alpes-Côte d'Azur, France`
Job title for this position. Example: `Founder and CEO`
Start date of this position. Example: `2002-12-01 00:00:00+00`
End date of this position (null if current)
Duration of this position in years. Example: `22.83`
Education history. Requires `get_profile_details`.
Unique identifier for this education entry
Name of the educational institution
Degree or qualification obtained. Example: `Doctor of Business Administration`
Fields or subjects studied. Example: `Business Administration`
Start date of this education. Example: `2005-01-01`
End date of this education. Example: `2010-01-01`
Websites listed on the person's LinkedIn profile. Requires `get_profile_details`.
Category type of the website (e.g. COMPANY, PERSONAL). Example: `COMPANY`
Website URL. Example: `https://gugin.com`
LinkedIn company identifier, if the website is tied to a company. Example: `796142`
Detailed data on the person's current company. Requires `get_profile_details`.
Time elapsed since last company data update
Revenue amount formatted for display. Example: `1.0`
Unit of formatted revenue (e.g. millions, billions). Example: `mil`
Currency code for formatted revenue. Example: `USD`
Company description. Example: `Gugins core competence is to help companies around the world taking advantage of cultural diversity. 2/3 of all M&A's fail to meet their objectives due to cultural clashes. This is what we do: cultural due diligence, post merger integration, damage control after failed M&A's, develop and deploy cultural intelligence, develop internationalisation strategies, develop and carry out global management training on cross-cultural management, coaching of senior executive management teams.`
Company industry. Example: `Business Consulting and Services`
Total number of employees
Raw revenue amount
Currency code for revenue. Example: `USD`
URL to the company's LinkedIn flagship page. Example: `https://www.linkedin.com/company/gugin---delivering-cultural-intelligence/`
Company LinkedIn URL. Example: `https://www.linkedin.com/company/gugin---delivering-cultural-intelligence/`
Company website domain. Example: `gugin.com`
Company website URL. Example: `https://gugin.com`
Employee count range (e.g. 1001-5000). Example: `11-50`
Country of company headquarters. Example: `France`
Geographical area of company headquarters. Example: `Provence-Alpes-Côte d'Azur`
City of company headquarters. Example: `Nice`
Postal code of company headquarters
Street address of company headquarters
Company name. Example: `Gugin - Creating Winning Corporate Cultures and culturally intelligent leaders`
Company location. Example: `Nice, Provence-Alpes-Côte d'Azur, France`
Whether company data was unavailable at scrape time. Example: `false`
Whether detailed company data was collected. Example: `true`
Timestamp when detailed data was collected
Timestamp of the last scraping
Whether the company was not found on LinkedIn. Example: `false`
Whether employee details were unavailable. Example: `true`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": "21e281488adf43086782b731d9c19e0b",
"object": "result",
"squid": "YOUR_SQUID_HASH",
"run": "RUN_HASH",
"collected_at": "2026-03-19 10:36:09.000000+00",
"company_name": "Gugin - Creating Winning Corporate Cultures and culturally intelligent leaders",
"company_id": "796142",
"email": "fm@gugin.com",
"email_status": "valid",
"mobile_phone": null,
"first_name": "Dr. Finn",
"last_name": "Majlergaard",
"location": "Greater Nice Metropolitan Area",
"position": "Founder and CEO",
"years_in_position": 22,
"years_in_company": 22,
"months_in_position": 10,
"sales_navigator_profile_url": "https://www.linkedin.com/sales/people/ACwAAAAFQjgBtNxy28alABzs_jj2meNVjFO0AUs,NAME_SEARCH,nwRo",
"picture_url": "https://media.licdn.com/dms/image/v2/D4D03AQEwqlTdXSN6Rg/profile-displayphoto-shrink_800_800/B4DZQ7HXczHUAo-/0/1736158574857",
"started_on": "2002-11-30 23:00:00+00",
"industry": "Higher Education",
"headline": "Author of: The Dangerous AI Gamble in Education. I/we help organisations develop winning company culture. I/we Gugin train leaders to become culturally and emotionally intelligent. Professor. Keynote speaker",
"summary": "Founder and CEO @ Gugin | Creating Winning Corporate Cultures. I am the person you come to when your organisation is falling apart because of a toxic workplace culture.",
"connections": 500,
"linkedin_profile_url": "https://www.linkedin.com/in/ACwAAAAFQjgBtNxy28alABzs_jj2meNVjFO0AUs",
"job_seeker": false,
"open_to_work": false,
"twitter_url": null,
"person_id": "344632",
"degree": "2nd",
"company_industry": "Business Consulting and Services",
"is_open": false,
"is_saved": false,
"is_premium": false,
"match_filters": true,
"no_match_reason": null,
"seniority": "CXO, Senior",
"recently_hired": false,
"pending_invitation": false,
"current_role_description": "Leading Gugin's mission to help organisations build winning, culturally intelligent workplace cultures.",
"banner_url": "https://media.licdn.com/dms/image/v2/example-banner.jpg",
"positions": [
{
"position_id": "344632796142",
"new": false,
"current": true,
"company_name": "Gugin - Creating Winning Corporate Cultures and culturally intelligent leaders",
"company_id": "796142",
"description": null,
"location": "Nice, Provence-Alpes-Côte d'Azur, France",
"title": "Founder and CEO",
"started_on": "2002-12-01 00:00:00+00",
"ended_on": null,
"period": 22.83
}
],
"education": [
{
"education_id": "344632-edu-1",
"school": "EAE Business School",
"degree": "Doctor of Business Administration",
"fields_of_study": "Business Administration",
"started_on": "2005-01-01",
"ended_on": "2010-01-01"
}
],
"websites": [
{
"category": "COMPANY",
"url": "https://gugin.com",
"company_id": 796142
}
],
"company": {
"elapsed": 0.42,
"formatted_revenue_amount": 1.0,
"formatted_revenue_unit": "mil",
"formatted_revenue_currency_code": "USD",
"description": "Gugins core competence is to help companies around the world taking advantage of cultural diversity. 2/3 of all M&A's fail to meet their objectives due to cultural clashes.",
"industry": "Business Consulting and Services",
"employees_count": 14,
"revenue_amount": 1000000,
"revenue_currency_code": "USD",
"flagship_url": "https://www.linkedin.com/company/gugin---delivering-cultural-intelligence/",
"url": "https://www.linkedin.com/company/gugin---delivering-cultural-intelligence/",
"domain": "gugin.com",
"website": "https://gugin.com",
"employees_count_range": "11-50",
"hq_country": "France",
"hq_geographical_area": "Provence-Alpes-Côte d'Azur",
"hq_city": "Nice",
"hq_postal_code": "06000",
"hq_address": null,
"name": "Gugin - Creating Winning Corporate Cultures and culturally intelligent leaders",
"location": "Nice, Provence-Alpes-Côte d'Azur, France",
"was_not_available": false,
"is_detailed": true,
"detailed_time": "2026-03-19T10:36:09.000Z",
"last_scraping_time": "2026-03-19T10:36:09.000Z",
"no_company_found": false,
"no_employees_details": true
},
"functions": null,
"native_id": "21e281488adf43086782b731d9c19e0b"
}
],
"next": null,
"previous": null
}
```
`positions`, `education`, `websites`, and `company` are only populated when the squid has `get_profile_details` enabled. Without it, these come back as empty arrays / `null`.
# Update Settings
Source: https://docs.lobstr.io/examples/sales-navigator-leads-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure scraper settings for Sales Navigator Leads Scraper including email enrichment
Configure your squid settings for the Sales Navigator Leads Scraper. This scraper supports email enrichment and requires linked Sales Navigator accounts.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **functions.email\_enrichment** | boolean | false | Enable email enrichment using lobstr.io's service (9 credits per profile where an email is found) |
| **functions.mobile\_enrichment** | boolean | false | Enable mobile phone enrichment (300 credits per profile where a mobile number is found) |
| **get\_profile\_details** | boolean | false | Fetch additional profile data: current role description and profile banner URL |
| **profiles\_per\_page** | integer | 25 | Number of leads to scrape per page (max: 25) |
| **max\_pages** | integer | 100 | Maximum number of pages to crawl (max: 100) |
| **max\_results** | integer | — | Total leads to collect before stopping |
| **max\_unique\_results\_per\_run** | integer | — | Maximum unique results across all tasks in the run |
| **start\_page** | integer | — | Page number to start scraping from (useful for resuming or skipping already-collected pages) |
| **skip\_collected\_leads** | boolean | false | Skip leads already present in your results database — useful for incremental runs |
| **split\_search** | boolean | false | Split the search into smaller sub-searches to bypass Sales Navigator's 2,500-result cap. Use for broad searches that would otherwise be truncated. |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **accounts** | array | Array of linked Sales Navigator account hashes (required) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Enabling `functions.email_enrichment` incurs additional credit costs for email enrichment.
Use multiple Sales Navigator accounts in the `accounts` array to increase throughput and avoid rate limits.
Sales Navigator limits search results to 2,500 leads per search. Enable `split_search` to automatically break large searches into sub-searches and collect beyond this limit.
**Backward compatibility:** The old function name `email` is still accepted but deprecated. Migrate to `email_enrichment`.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Sales Navigator Leads Scraper (1)",
"accounts": ["YOUR_SALES_NAV_ACCOUNT_HASH"],
"no_line_breaks": true,
"export_unique_results": true,
"to_complete": false,
"params": {
"functions": {
"email_enrichment": true
},
"profiles_per_page": 25,
"max_pages": 100,
"max_results": null
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Update squid settings with email enrichment and linked accounts
payload = {
"name": "Sales Navigator Leads Scraper (1)",
"accounts": ["YOUR_SALES_NAV_ACCOUNT_HASH"], # Required: linked Sales Nav accounts
"no_line_breaks": True,
"export_unique_results": True,
"to_complete": False,
"params": {
"functions": {
"email_enrichment": True # Enable email enrichment (extra credits)
},
"profiles_per_page": 25, # Max: 25
"max_pages": 100, # Max: 100
"max_results": None # null = no limit
}
}
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json=payload
)
print(f"Settings updated: {response.json()['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Sales Navigator Leads Scraper (1)",
"no_line_breaks": true,
"params": {
"functions": {
"email_enrichment": true
},
"max_pages": 100,
"max_results": null,
"profiles_per_page": 25
},
"to_complete": false,
"export_unique_results": true
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/seloger-search-export/add-tasks
POST https://api.lobstr.io/v1/tasks
Add SeLoger search URLs to scrape real estate listings
Add SeLoger search URLs to scrape French real estate listings. The scraper extracts property details including pricing, area, location, agency information, and energy ratings.
Crawler ID: `78f5839ee4b97c30e67eec391b907dd0`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the SeLoger Search Export crawler |
| **tasks** | array | Yes | Array of task objects, each containing a `url` field |
## Task Object
| Field | Type | Required | Description |
| - | - | - | - |
| **url** | string | Yes | SeLoger search URL (e.g., `https://www.seloger.com/list.htm?projects=2&places=...`) |
Perform your search on SeLoger.com first, apply all filters (location, property type, price range), then copy the URL to preserve all parameters.
SeLoger is a French real estate platform - URLs contain encoded location and filter parameters.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{
"url": "https://www.seloger.com/list.htm?projects=2&places=%5B%7B%22subDivisions%22:%5B%2210%22%5D%7D%5D&mandatorycommodities=0&enterprise=1&qsVersion=1.0"
}
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Add SeLoger search URLs
# Copy the URL directly from SeLoger after applying filters
payload = {
"squid": squid_id,
"tasks": [
{
"url": "https://www.seloger.com/list.htm?projects=2&places=%5B%7B%22subDivisions%22:%5B%2210%22%5D%7D%5D&mandatorycommodities=0&enterprise=1&qsVersion=1.0"
}
]
}
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json=payload
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates skipped: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "fa0df9f38046ae68a04117ed96652005",
"created_at": "2025-07-17T08:55:52.537282",
"is_active": true,
"params": {
"url": "https://www.seloger.com/list.htm?projects=2&places=%5B%7B%22subDivisions%22:%5B%2210%22%5D%7D%5D&mandatorycommodities=0&enterprise=1&qsVersion=1.0"
},
"module": 13,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/seloger-search-export/credit-cost
Credit cost for the SeLoger Search Export
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Listings | 0.5 | 0.5 credit per listing. |
| Get Annonce Details | 4 | 4 credit per listing. |
# Get Results
Source: https://docs.lobstr.io/examples/seloger-search-export/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from SeLoger Search Export
Retrieve scraped data from your **SeLoger Search Export** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Full address of the property. Example: `Issy-les-Moulineaux`
Whether the property is furnished. Example: `false`
Name of the agency contact person. Example: `GEMALIA IMMOBILIER`
Whether the agency has a listed email address. Example: `true`
Unique identifier for the agency on SeLoger. Example: `440227`
URL of the agency's logo or profile image. Example: `https://v.seloger.com/s/width/150/logos/0/z/x/0/0zx09bbylr0bhqsjhjdfui8t37znwvg2nyozrq5s6.jpg`
URL to the agency's profile page on SeLoger. Example: `http://www.gemalia.fr/`
URL to the agency's listings page on SeLoger. Example: `https://www.seloger.com/professionnels/agences-immobilieres/saint-maur-des-fosses-94100/agence-24353/`
Phone number of the agency. Example: `06 08 16 60 22`
Unique identifier for the listing on SeLoger. Example: `228317007`
Living surface area of the property in square metres. Example: `85.0`
Business unit or brand within the SeLoger group. Example: `1`
Date and time this listing was scraped. Example: `20/03/2026 07:59`
District or neighborhood of the property. Example: `Chemins des Vignes`
Type of property (e.g. apartment, house, land). Example: `Appartement`
Internal identifier for the property type. Example: `1`
Whether the listing is an exclusive mandate on SeLoger. Example: `true`
Whether the listing has expired on SeLoger. Example: `false`
Monthly rental price (for rental listings). Example: `3056`
Native SeLoger identifier for the listing. Example: `30440227`
Nature or category of the real estate transaction. Example: `1`
List of property photo URLs. Example: `https://v.seloger.com/s/crop/341x256/visuels/1/e/p/x/1epxz2k12bzzwgw41dwm9wwszojxzph451esiey4z.jpg, https://v.seloger.com/s/crop/341x256/visuels/1/j/1/c/1j1canrp4t6rva0z51irnohff9wuxwt23btnwq4pf.jpg, https://v.seloger.com/s/crop/341x256/visuels/0/b/8/f/0b8f3yzgk7hk3gu5kd2vfrb09fhlc0uixzoakxf0z.jpg, https://v.seloger.com/s/crop/341x256/visuels/1/5/z/1/15z1jdk5hdb1n3e1xszdylitifp5d2smcfa03f49b.jpg, https://v.seloger.com/s/crop/341x256/visuels/0/p/5/x/0p5xuawv6mwznffgf1gcx01wkwiowut9pvh10vpee.jpg`
Total number of photos in the listing. Example: `33`
Position of the listing in the search results
French postal code of the property location. Example: `92130`
Listed price of the property. Example: `600000`
Price per square metre. Example: `7059`
Additional pricing note or label (e.g. fees included)
Unique publication identifier for the listing. Example: `30440227`
Energy Performance Diagnostic (DPE) class of the property (A to G). Example: `E`
Electricity consumption figure from the DPE. Example: `314`
Greenhouse gas emissions (GES) class of the property (A to G). Example: `B`
Gas emissions value from the GES diagnostic. Example: `10`
Features and attributes of the property. Example: `Dispo le 30/04/2025, 2 terrasses, Jardin, Exposition Nord/Sud, Sans vis-à-vis, Calme, Belle vue, Cave, Interphone, Cuisine séparée, Salle de bain (baignoire), Salle d'eau (douche), Toilettes, Toilettes séparées, Salle à manger 15 m², Placards / rangements, Parquet, Chauffage : radiateur`
Total number of rooms in the property. Example: `5`
Short description or tagline of the listing on SeLoger. Example: `Appartement à vendre - Appartement/maison duplex 85m² rez de jardin avec 2 terrasses intérieures - face au jardin botanique - endroit très arboré - cuisine américaine avec salle à manger - salon - buanderie - salle de bain - bureau - wc au rez de chaussée - A l'étage suite parentale avec salle d'eau, une chambre et un espace jeu ou télé.`
Tags or labels associated with the listing on SeLoger. Example: `5 pièces, 3 chambres, 85 m², Étage 0/3, Terrasse, Jardin`
Type of transaction (sale or rental). Example: `2`
Direct URL to the listing on SeLoger. Example: `https://www.seloger.com/annonces/achat/appartement/issy-les-moulineaux-92/chemins-des-vignes/228317007.htm`
URL of the property video tour. Example: `https://youtu.be/_gBRTO5yrRc?si=drgHQqjmrzHiWJKZ`
URL to the virtual visit or 3D tour of the property
Latitude coordinate of the property. Example: `48.817728`
Longitude coordinate of the property. Example: `2.255243`
Annual co-ownership charges (charges de copropriété). Example: `2300`
Number of lots in the co-ownership building. Example: `6`
Whether the co-ownership has an ongoing legal syndic procedure. Example: `false`
Additional property photos beyond the main listing photos. Example: `https://v.seloger.com/s/cdn/x/visuels/1/e/p/x/1epxz2k12bzzwgw41dwm9wwszojxzph451esiey4z.jpg, https://v.seloger.com/s/cdn/x/visuels/1/j/1/c/1j1canrp4t6rva0z51irnohff9wuxwt23btnwq4pf.jpg, https://v.seloger.com/s/cdn/x/visuels/0/b/8/f/0b8f3yzgk7hk3gu5kd2vfrb09fhlc0uixzoakxf0z.jpg, https://v.seloger.com/s/cdn/x/visuels/1/5/z/1/15z1jdk5hdb1n3e1xszdylitifp5d2smcfa03f49b.jpg, https://v.seloger.com/s/cdn/x/visuels/0/p/5/x/0p5xuawv6mwznffgf1gcx01wkwiowut9pvh10vpee.jpg`
Title of the property listing on SeLoger. Example: `Vente Appartement 5 pièces Issy-les-Moulineaux - Appartement F5/T5/5 pièces 85 m²`
Full description text of the listing on SeLoger. Example: `Appartement/maison duplex 85m² rez de jardin avec 2 terrasses intérieures - face au jardin botanique - endroit très arboré - cuisine américaine avec salle à manger - salon - buanderie - salle de bain - bureau - wc au rez de chaussée - A l'étage suite parentale (chambre avec salle d'eau) une chambre et un espace jeu ou télé - cagibis extérieurs - video disponible`
Agency or seller reference number for the listing. Example: `5p issy les moulineaux jardin botanique`
Number of bedrooms in the property. Example: `3`
URL of the main listing photo. Example: `https://v.seloger.com/s/crop/414x414/visuels/1/e/p/x/1epxz2k12bzzwgw41dwm9wwszojxzph451esiey4z.jpg`
French INSEE geographic code for the municipality
Level of paid highlighting or promotion on SeLoger. Example: `1`
Percentage by which the price has been reduced
Whether the listing URL is redirected to another page
Contact email address for the listing. Example: `true`
Whether the seller is a private individual (not an agency). Example: `false`
Legal company name of the listing agency (distinct from the contact person name). Example: `GEMALIA IMMOBILIER SARL`
Agency SIRET registration number, extracted from legal information on SeLoger. Example: `89823412700016`
Property sub-type classification. Example: `MULTI_STOREY`, `HOUSE_VILLA`
Whether the listing is a new-build or newly listed property. Example: `false`
Land/plot surface area in square metres (relevant for houses and land). Example: `312.0`
Nearby public transport lines (metro and bus) closest to the property. Example: `M12, Bus 89`
Whether the listing includes a brokerage fee (frais d'agence). Example: `true`
Date and time the listing was first published on SeLoger. Example: `2026-03-15 09:00:00`
Date and time the listing was last updated on SeLoger. Example: `2026-05-10 14:30:00`
Street address of the agency office. Example: `12 Rue de la Paix`
City where the agency office is located. Example: `Paris`
Postal code of the agency office. Example: `75001`
Average customer rating of the agency. Example: `4.8`
Number of customer reviews for the agency. Example: `142`
JSON array of photo objects, each with `url`, `classification` (AI scene label: LIVING\_ROOM, KITCHEN, BATHROOM, BEDROOM, BALCONY, EXTERIOR\_VIEW, EMPTY\_ROOM, HOME\_OFFICE, HALLWAY, COURTYARD, STAIRCASE, BUILDING\_FACADE, CLOSET, LOGO, YARD, TERRACE, GMAP, FLOORPLAN), and `alt` text
Floorplan image URLs (separate from main photos), comma-separated
Year the property was built. Example: `1972`
Overall condition of the building. Values: `WELL_KEPT`, `MINT_CONDITION`, `NEED_OF_RENOVATION`, `FIRST_TIME_USE`, `REFURBISHED`
Previous listed price before the most recent price reduction. Example: `450000`
Whether the listing shows a precise street address (`true`) or city-level location only (`false`). Example: `true`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 71098,
"object": "result",
"squid": "e746e57a2f2970975260cef661a14982",
"run": "e263a2fd9e3211e54f9e45bc32ab8e87",
"address": "Issy-les-Moulineaux",
"is_furnished": false,
"agency_contact_name": "GEMALIA IMMOBILIER",
"agency_has_email": true,
"agency_id": 440227,
"agency_img_url": "https://v.seloger.com/s/width/150/logos/0/z/x/0/0zx09bbylr0bhqsjhjdfui8t37znwvg2nyozrq5s6.jpg",
"agency_link": "http://www.gemalia.fr/",
"agency_page": "https://www.seloger.com/professionnels/agences-immobilieres/saint-maur-des-fosses-94100/agence-24353/",
"agency_phone_number": "06 08 16 60 22",
"annonce_id": 228317007,
"area": 85.0,
"business_unit": 1,
"collected_at": "20/03/2026 07:59",
"district": "Chemins des Vignes",
"estate_type": "Appartement",
"estate_type_id": 1,
"is_exclusive": true,
"is_expired": false,
"monthly_price": 3056,
"native_id": 71098,
"nature": 1,
"pictures": "https://v.seloger.com/s/crop/341x256/visuels/1/e/p/x/1epxz2k12bzzwgw41dwm9wwszojxzph451esiey4z.jpg, https://v.seloger.com/s/crop/341x256/visuels/1/j/1/c/1j1canrp4t6rva0z51irnohff9wuxwt23btnwq4pf.jpg, https://v.seloger.com/s/crop/341x256/visuels/0/b/8/f/0b8f3yzgk7hk3gu5kd2vfrb09fhlc0uixzoakxf0z.jpg, https://v.seloger.com/s/crop/341x256/visuels/1/5/z/1/15z1jdk5hdb1n3e1xszdylitifp5d2smcfa03f49b.jpg, https://v.seloger.com/s/crop/341x256/visuels/0/p/5/x/0p5xuawv6mwznffgf1gcx01wkwiowut9pvh10vpee.jpg",
"picture_count": 33,
"position": null,
"postal_code": "92130",
"price": 600000,
"price_per_meter": 7059,
"pricing_price_note": null,
"publication_id": 30440227,
"dpe": "E",
"electricity_consumption": 314,
"ges": "B",
"gas_emissions": 10,
"features": "Dispo le 30/04/2025, 2 terrasses, Jardin, Exposition Nord/Sud, Sans vis-à-vis, Calme, Belle vue, Cave, Interphone, Cuisine séparée, Salle de bain (baignoire), Salle d'eau (douche), Toilettes, Toilettes séparées, Salle à manger 15 m², Placards / rangements, Parquet, Chauffage : radiateur",
"rooms": 5,
"short_description": "Appartement à vendre - Appartement/maison duplex 85m² rez de jardin avec 2 terrasses intérieures - face au jardin botanique - endroit très arboré - cuisine américaine avec salle à manger - salon - buanderie - salle de bain - bureau - wc au rez de chaussée - A l'étage suite parentale avec salle d'eau, une chambre et un espace jeu ou télé.",
"tags": "5 pièces, 3 chambres, 85 m², Étage 0/3, Terrasse, Jardin",
"transaction_type": 2,
"url": "https://www.seloger.com/annonces/achat/appartement/issy-les-moulineaux-92/chemins-des-vignes/228317007.htm",
"video_url": "https://youtu.be/_gBRTO5yrRc?si=drgHQqjmrzHiWJKZ",
"virtual_visit_url": null,
"latitude": 48.817728,
"longitude": 2.255243,
"coownership_annual_charges": 2300,
"coownership_number_of_lots": 6,
"coownership_is_syndic_procedure": false,
"additional_pictures": "https://v.seloger.com/s/cdn/x/visuels/1/e/p/x/1epxz2k12bzzwgw41dwm9wwszojxzph451esiey4z.jpg, https://v.seloger.com/s/cdn/x/visuels/1/j/1/c/1j1canrp4t6rva0z51irnohff9wuxwt23btnwq4pf.jpg, https://v.seloger.com/s/cdn/x/visuels/0/b/8/f/0b8f3yzgk7hk3gu5kd2vfrb09fhlc0uixzoakxf0z.jpg, https://v.seloger.com/s/cdn/x/visuels/1/5/z/1/15z1jdk5hdb1n3e1xszdylitifp5d2smcfa03f49b.jpg, https://v.seloger.com/s/cdn/x/visuels/0/p/5/x/0p5xuawv6mwznffgf1gcx01wkwiowut9pvh10vpee.jpg",
"title": "Vente Appartement 5 pièces Issy-les-Moulineaux - Appartement F5/T5/5 pièces 85 m²",
"description": "Appartement/maison duplex 85m² rez de jardin avec 2 terrasses intérieures - face au jardin botanique - endroit très arboré - cuisine américaine avec salle à manger - salon - buanderie - salle de bain - bureau - wc au rez de chaussée - A l'étage suite parentale (chambre avec salle d'eau) une chambre et un espace jeu ou télé - cagibis extérieurs - video disponible",
"ref": "5p issy les moulineaux jardin botanique",
"bedrooms_count": 3,
"main_picture": "https://v.seloger.com/s/crop/414x414/visuels/1/e/p/x/1epxz2k12bzzwgw41dwm9wwszojxzph451esiey4z.jpg",
"insee_code": null,
"highlighting_level": 1,
"price_decrease_percent": null,
"is_redirected": null,
"contact_email": true,
"contact_is_private_seller": false,
"agency_company_name": "BLG IMMOBILIER",
"agency_siret": "88061178500028",
"property_sub_type": "MULTI_STOREY",
"is_new": false,
"plot_surface": null,
"transport": "Métro: 6, 8, 10 | Bus: 28, 80, 82",
"has_brokerage_fee": false,
"listing_creation_date": "2026-05-27T18:10:00",
"listing_update_date": "2026-06-24T12:21:24",
"agency_address": "7 avenue de l'Opéra, 75001 Paris",
"agency_city": "Paris",
"agency_zipcode": "75009",
"agency_rating": 4.8,
"agency_reviews": 77,
"picture_classifications": "[{\"url\": \"https://mms.seloger.com/...\", \"classification\": \"LIVING_ROOM\", \"alt\": \"Appartement 3 pièces\"}, {\"url\": \"https://mms.seloger.com/...\", \"classification\": \"KITCHEN\", \"alt\": \"Appartement 3 pièces\"}]",
"floorplan_pictures": "https://v.seloger.com/s/full/visuels/2/m/5/4/2m54abc123def456.jpg",
"year_of_construction": 1975,
"building_state": "WELL_KEPT",
"previous_price": "378 000 €",
"is_address_published": true,
"functions": null
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/seloger-search-export/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure SeLoger Search Export scraper settings
Configure your SeLoger Search Export squid settings. Control pagination and enable detail page enrichment to get full descriptions and geographic coordinates.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_pages** | integer | 400 | Maximum number of search result pages to crawl (max: 400) |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the run |
| **functions.get\_annonce\_details** | boolean | false | Visit each listing's detail page to fetch full description, coordinates (lat/lng), and extra attributes (4 credits per listing) |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Enable `functions.get_annonce_details` to get full property descriptions and exact GPS coordinates.
Enabling `get_annonce_details` increases run time as each listing requires an additional HTTP request.
Use `max_pages` to limit the scope of large searches and control credit usage.
**Backward compatibility:** The old function name `annonce_details` is still accepted but deprecated. Migrate to `get_annonce_details`.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "SeLoger Search Export (1)",
"concurrency": 5,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"functions": {
"get_annonce_details": true
},
"max_pages": 4
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Update squid settings with detail page enrichment
payload = {
"name": "SeLoger Search Export (1)",
"concurrency": 5,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"functions": {
"get_annonce_details": True # Fetch full descriptions and coordinates
},
"max_pages": 4 # Limit to 4 pages of results
}
}
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json=payload
)
print(f"Settings updated: {response.json()['name']}")
```
## Response
```json 201 theme={null}
{
"name": "SeLoger Search Export (1)",
"concurrency": 5,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"functions": {
"get_annonce_details": true
},
"max_pages": 4
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/similarweb-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Similarweb Scraper squid
Add domains or Similarweb URLs to your **Similarweb Scraper** squid.
Crawler ID: `ac02527b552b088c1f4ebe5a41d3d40a`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
What to analyse. Four forms are accepted:
* a bare domain: `github.com`
* the website itself: `https://github.com/`
* its Similarweb page: `https://www.similarweb.com/website/github.com/`
* a Similarweb ranking: `https://www.similarweb.com/top-websites/france/news-and-media/` — every website of the ranking is collected, one row each.
A ranking URL already carries its country and category: when it does, the `country` and `category` filters are ignored for that task.
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "github.com"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "github.com"}
],
},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "github.com"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/similarweb-scraper/credit-cost
Credit cost for the Similarweb Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Websites | 1 | 1 credit per website. |
| Company Details | 1 | 1 extra credit per website when `company_details` is enabled. |
| AI Traffic | 1 | 1 extra credit per website when `ai_traffic` is enabled. |
| Competitor Details | 1 | 1 extra credit per website when `competitor_details` is enabled. |
# Get Results
Source: https://docs.lobstr.io/examples/similarweb-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Similarweb Scraper
Retrieve scraped data from your **Similarweb Scraper** runs. One row per website. Add-on fields are only populated when the matching add-on (`company_details`, `ai_traffic`, `competitor_details`) is enabled.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`.
## Query Parameters
Hash of the squid to get results from.
Page number (default: 1).
## Result Fields
### Export Websites
Domain the row describes, as Similarweb indexes it. Example: `github.com`
Similarweb page this row was collected from.
UTC timestamp of the collection.
Month Similarweb's snapshot covers. Similarweb publishes one snapshot per month.
False when Similarweb tracks no traffic for this domain: the row is kept but every metric is empty.
Website description as published by Similarweb.
Similarweb category the website is ranked in.
Favicon of the website.
Desktop screenshot of the website.
Mobile screenshot of the website.
Worldwide traffic rank, all categories.
Change of the global rank versus the previous month.
Global rank of the previous month.
Global rank of the last 3 months.
Country the country rank refers to (the website's leading country).
Traffic rank inside the leading country.
Change of the country rank versus the previous month.
Country rank of the previous month.
Country rank of the last 3 months.
Traffic rank inside the website's category.
Change of the category rank versus the previous month.
Category rank of the previous month.
Category rank of the last 3 months.
Estimated visits over the snapshot month.
Change of the monthly visits versus the previous month.
Share of visits that bounce, between 0 and 1.
Average number of pages seen per visit.
Average visit duration in seconds.
Average visit duration as published (`HH:MM:SS`).
3-month traffic trend. Similarweb publishes it as a percentage of the chart scale, not as visit counts.
Scale of the traffic chart Similarweb draws for this website. Example: `<1B`
The 10 marketing channels with their ranking. Similarweb only discloses the share of the leading channel to logged-out callers: the other channels carry rank only and a null percentage.
Share of search traffic that is organic.
Share of search traffic that is paid.
Number of keywords the website ranks on.
5 top keywords with their cost per click. Volume and estimated value are paywalled by Similarweb for logged-out callers and always come back empty.
5 countries sending the most traffic.
Number of countries sending traffic to the website.
Age brackets of the audience with their share.
Share of male visitors.
Share of female visitors.
5 social networks sending the most traffic.
Number of social networks sending traffic.
6 websites sending the most referral traffic. Similarweb hides the domain of the top rows from logged-out callers (`is_locked`), the share is always given.
Number of websites sending referral traffic.
Categories the referral traffic comes from.
6 websites receiving the most outgoing traffic.
Number of websites receiving outgoing traffic.
Categories the outgoing traffic goes to.
5 websites sending the most display-ads traffic.
Number of websites sending display-ads traffic.
Number of ad networks used.
Leading technology per technology category.
Number of technologies detected on the website.
Categories this audience is also interested in.
Topics this audience is also interested in.
Websites this audience also visits.
10 closest competitors with their affinity score.
Company operating the website.
Year the company was founded.
Lower bound of the employee range.
Upper bound of the employee range.
Lower bound of the yearly revenue range.
Upper bound of the yearly revenue range.
Currency of the revenue range.
City of the company headquarters.
Country of the company headquarters.
Similarweb internal code of the headquarters state.
Category of the company.
Parent domain of the company.
True when the figures come from a Google Analytics account connected by the website owner.
True when Similarweb flags the traffic data as invalid.
### Company Details
Exact monthly visit counts of the last 3 months.
Average visit duration of the last 3 months.
Pages per visit of the last 3 months.
Yearly revenue estimate per year.
Private or public company.
Public contact email of the company.
Public phone number of the company.
Twitter profile of the company.
Facebook page of the company.
LinkedIn page of the company.
Stock tickers of the company when it is listed.
Domains owned by the company.
Dated company news Similarweb collects.
Competing companies with their firmographics and total visits.
### AI Traffic
Share of the website traffic referred by AI assistants.
Visits referred by AI assistants over the month.
The 7 AI assistants ranked by the traffic they send.
Share of the AI referral traffic per assistant, in percent. Similarweb only values the top 3.
3-month history of the share per AI assistant.
Scale of the AI traffic chart.
### Competitor Details
The 10 closest competitors with their full metrics (description, screenshots, bounce rate, visit duration, pages per visit, global/country/category ranks and their monthly change, category, company name, affinity).
## Code Examples
```bash cURL theme={null}
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=YOUR_SQUID_HASH" \
-d "page=1"
```
```python Python theme={null}
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "YOUR_SQUID_HASH", "page": 1},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"domain_name": "github.com", "source_url": "https://www.similarweb.com/website/github.com/", "snapshot_date": "2026-08-01T00:00:00+00:00", "description": "Join the world's most widely adopted, AI-powered developer platform", "category": "computers_electronics_and_technology/programming_and_developer_software", "global_rank": 50, "country_code": "US", "country_rank": 81, "visits": 649321442.0, "bounce_rate": 0.3665509655, "pages_per_visit": 5.767678566, "avg_visit_duration": 384}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/similarweb-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Similarweb Scraper settings
Configure your **Similarweb Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| country | string | `worldwide` | Country of the ranking, used only when the task URL is the bare `https://www.similarweb.com/top-websites/` ranking. Ignored for a single website, and ignored when the ranking URL already names a country. Example values: `united-states`, `france`, `germany`. |
| category | string | `all-categories` | Category of the ranking, used only when the task URL is the bare `top-websites` ranking. Ignored for a single website, and ignored when the ranking URL already names a category. Similarweb returns 50 websites for a country-only or category-only ranking, but only 5 when both are set. Example: `news-and-media`. |
| max\_results | integer | 50 | Maximum number of websites collected per task. A single website is always one row, so this only matters on a ranking URL, where Similarweb serves at most 50 websites. |
| company\_details | boolean | false | Add the company profile: exact monthly visit counts, revenue per year, company type, public email and phone, social profiles, subsidiaries, dated company news and competing companies with their firmographics. Costs 1 extra credit per website. |
| ai\_traffic | boolean | false | Add the AI assistant traffic: share of the traffic referred by ChatGPT, Gemini, Claude, Perplexity, DeepSeek, Grok and Copilot, their ranking and their 3-month history. Costs 1 extra credit per website. |
| competitor\_details | boolean | false | Add the full metrics of the 10 closest competitors: description, screenshots, bounce rate, visit duration, pages per visit, global/country/category ranks with their monthly change. Costs 1 extra credit per website. |
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"country": "france",
"category": "news-and-media",
"max_results": 50,
"company_details": true,
"ai_traffic": true
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"country": "france",
"category": "news-and-media",
"max_results": 50,
"company_details": True,
"ai_traffic": True,
},
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"country": "france", "category": "news-and-media", "max_results": 50, "company_details": true, "ai_traffic": true}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/threads-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Threads Scraper squid
Add URLs or inputs to your **Threads Scraper** squid.
Crawler ID: `7308ae543e6abc70438d6b968d3a1b38`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
Single post URL, profile URL, or a keyword/hashtag. Example: `https://www.threads.net/@zuck`
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "7308ae543e6abc70438d6b968d3a1b38",
"tasks": [
{"url": "https://www.threads.net/@zuck"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "7308ae543e6abc70438d6b968d3a1b38",
"tasks": [
{"url": "https://www.threads.net/@zuck"}
],
},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.threads.net/@zuck"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/threads-scraper/credit-cost
Credit cost for the Threads Scraper
1 credit per result row.
# Get Results
Source: https://docs.lobstr.io/examples/threads-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Threads Scraper
Retrieve scraped data from your **Threads Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Page number (default: 1)
## Result Fields
Direct URL of the post. Example: `https://www.threads.net/@zuck/post/Cabcde12345`
Numeric identifier of the post. Example: `3456789012345`
Short code of the post used in its URL. Example: `Cabcde12345`
Row type: post or reply. Example: `post`
Where the row came from: posts, search, or permalink. Example: `posts`
Keyword or tag searched for (search rows only). Example: `AI`
UTC timestamp at which the row was collected. Example: `2026-09-15T10:00:00Z`
Full text of the post. Example: `Just launched something new!`
Publication date of the post in UTC. Example: `2026-09-14T20:00:00Z`
Language detected by Threads for the post. Example: `en`
Topic/community tag attached to the post. Example: `Technology`
Hashtags found in the post text.
Handles mentioned in the post text.
Handles that Threads itself resolved as mentions.
Accounts Threads resolved as mentions, with user ids.
Number of likes. Example: `45231`
Number of direct replies. Example: `1847`
Number of reposts. Example: `3210`
Number of quote posts. Example: `892`
Number of shares. Example: `5612`
Number of views (only on single-post crawls). Example: `1200000`
True when the post carries at least one image, video, or carousel. Example: `false`
Kind of media: text, image, video, carousel, or audio. Example: `text`
URLs of the post media.
Width in pixels of the post media. Example: `1080`
Height in pixels of the post media. Example: `1080`
True when the attached video carries audio. Example: `false`
Alt text of the media.
True when the post attaches a GIF. Example: `false`
Title of the music track attached to the post.
Artist of the music track.
External links in the post.
Title of the link preview attached to the post.
True when the post is flagged as a paid partnership. Example: `false`
True when the post is pinned. Example: `false`
True when the post text was edited. Example: `false`
True when the media is marked as a spoiler. Example: `false`
True when Threads flags the post as AI-generated. Example: `false`
Who is allowed to reply to the post. Example: `everyone`
True when the post is a reply to another post. Example: `false`
Handle of the account this post replies to.
True when the post quotes another post. Example: `false`
URL of the quoted post.
True when the post is a repost. Example: `false`
URL of the reposted post.
Handle of the post author. Example: `zuck`
Numeric identifier of the post author. Example: `314216`
Display name of the post author. Example: `Mark Zuckerberg`
URL of the post author profile. Example: `https://www.threads.net/@zuck`
Profile picture of the post author. Example: `https://scontent.example.com/v/t51.2885-19/zuck_profile.jpg`
True when the post author is verified. Example: `true`
True when the post author account is private. Example: `false`
Number of followers (profile crawls only). Example: `12500000`
Biography of the crawled profile (profile crawls only).
Links listed in the profile biography.
Topic tags displayed on the profile.
Highest resolution profile picture (profile crawls only).
True when the profile is reachable on the fediverse. Example: `true`
## Code Examples
```bash cURL theme={null}
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=7308ae543e6abc70438d6b968d3a1b38" \
-d "page=1"
```
```python Python theme={null}
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "7308ae543e6abc70438d6b968d3a1b38", "page": 1},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"post_id": "3456789012345", "text_content": "Just launched something new!", "username": "zuck", "like_count": 45231, "reply_count": 1847, "published_at": "2026-09-14T20:00:00Z", "is_verified": true}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/threads-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Threads Scraper settings
Configure your **Threads Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| sort | string | top | Ranking for keyword/tag searches: top (most relevant) or recent (newest first) |
| include\_replies | boolean | false | Only applies to single post URLs — if true, also returns replies |
| fetch\_since | string | — | Only collect posts published after this point |
| fetch\_since\_timezone | string | — | Timezone for interpreting an absolute fetch\_since date |
| max\_results | integer | — | Max posts per input |
| max\_unique\_results\_per\_run | integer | — | Max unique posts across all inputs in the run |
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/7308ae543e6abc70438d6b968d3a1b38 \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sort": "recent",
"include_replies": false,
"max_results": 500
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/7308ae543e6abc70438d6b968d3a1b38",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"sort": "recent",
"include_replies": False,
"max_results": 500,
},
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"sort": "recent", "include_replies": false, "max_results": 500}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/tiktok-comments-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your TikTok Comments Scraper squid
Add URLs or inputs to your **TikTok Comments Scraper** squid. Each task object must include the required fields below.
Crawler ID: `5fc7b468267ec881344a11ac05c15a76`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task supports the fields below.
## Task Fields
# Credit Cost
Source: https://docs.lobstr.io/examples/tiktok-comments-scraper/credit-cost
Credit cost for the TikTok Comments Scraper
1 credit per comment
# Get Results
Source: https://docs.lobstr.io/examples/tiktok-comments-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from TikTok Comments Scraper
Retrieve scraped data from your **TikTok Comments Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique identifier for the TikTok comment. Example: `sinzels`
TikTok display name of the comment author. Example: `Sinzels`
Full text content of the TikTok comment. Example: `UPDATE 2025;
Bella Poarch: 69.9M
Leah halton: 64M`
Whether the comment contains an image or sticker. Example: `false`
Number of likes the comment received. Example: `7418`
Number of replies to this comment. Example: `91`
Whether the video creator liked this comment. Example: `false`
Whether the commenter is the video creator. Example: `false`
Whether this is a reply to another comment. Example: `false`
Whether the video creator replied to this comment. Example: `false`
Date and time the comment was posted. Example: `2025-04-16T13:25:57Z`
Unique TikTok identifier for the comment. Example: `7493901624780276486`
Unique identifier for the TikTok video this comment belongs to. Example: `6862153058223197445`
Username of the account this comment is replying to
Identifier of the comment thread this reply belongs to
Unique TikTok identifier of the comment author. Example: `7257306630806356997`
Whether the comment is pinned to the top of the video. Example: `false`
URL of the image or sticker attached to the comment
URL of the comment author's TikTok profile picture. Example: `https://p16-common-sign.tiktokcdn-eu.com/tos-alisg-avt-0068/6e61cfab75c399e7a58459442d607463~tplv-tiktokx-cropcenter:100:100.jpg?dr=10399&refresh_token=1aa12fef&x-expires=1774080000&x-signature=LM4Kos6ABLQMbiGzx6uR3FBKCPU%3D&t=4d5b0474&ps=13740610&shp=30310797&shcp=ff37627b&idc=no1a`
URL of the TikTok video provided as scraper input. Example: `https://www.tiktok.com/@bellapoarch/video/6862153058223197445`
Timestamp when the comment was scraped. Example: `2026-03-20T16:47:36Z`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 88365,
"object": "result",
"squid": "66ead021770793f40275dd07106c819b",
"run": "dc4a5fa78da64f5c11c43082e257470e",
"unique_id": "sinzels",
"nickname": "Sinzels",
"text": "UPDATE 2025;\nBella Poarch: 69.9M\nLeah halton: 64M",
"has_image": false,
"like_count": 7418,
"reply_count": 91,
"liked_by_author": false,
"is_author": false,
"is_reply": false,
"replied_by_author": false,
"created_at": "2025-04-16T13:25:57Z",
"comment_id": "7493901624780276486",
"video_id": "6862153058223197445",
"reply_to": null,
"thread_id": null,
"user_id": "7257306630806356997",
"is_pinned": false,
"image": null,
"avatar": "https://p16-common-sign.tiktokcdn-eu.com/tos-alisg-avt-0068/6e61cfab75c399e7a58459442d607463~tplv-tiktokx-cropcenter:100:100.jpg?dr=10399&refresh_token=1aa12fef&x-expires=1774080000&x-signature=LM4Kos6ABLQMbiGzx6uR3FBKCPU%3D&t=4d5b0474&ps=13740610&shp=30310797&shcp=ff37627b&idc=no1a",
"input_video_url": "https://www.tiktok.com/@bellapoarch/video/6862153058223197445",
"scraping_time": "2026-03-20T16:47:36Z",
"functions": null,
"native_id": 88365
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/tiktok-comments-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the TikTok Comments Scraper settings
Configure your TikTok Comments Scraper squid settings. Control the maximum number of comments and replies to collect per video.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_comments** | integer | unlimited | Maximum number of top-level comments to collect per video |
| **max\_replies\_per\_comment** | integer | unlimited | Maximum number of replies to collect per comment |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Set `max_comments` to a reasonable limit (e.g., 500) for high-engagement videos to control credit usage.
Setting `max_replies_per_comment` to 0 will collect only top-level comments without any replies.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "TikTok Comments Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_comments": 500,
"max_replies_per_comment": 10
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "TikTok Comments Scraper (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_comments": 500,
"max_replies_per_comment": 10
}
}
)
data = response.json()
print(f"Settings updated: {data['name']}")
```
## Response
```json 201 theme={null}
{
"name": "TikTok Comments Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_comments": 500,
"max_replies_per_comment": 10
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/tiktok-hashtag-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your TikTok Hashtag Scraper squid
Add URLs or inputs to your **TikTok Hashtag Scraper** squid.
Crawler ID: `dac422babfc7bf622b984646916e68f3`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
TikTok hashtag to scrape videos from, with or without the leading #. Example: `lobstr`
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"hashtag": "lobstr"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"hashtag": "lobstr"}
],
},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"hashtag": "lobstr"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/tiktok-hashtag-scraper/credit-cost
Credit cost for the TikTok Hashtag Scraper
1 credit per video.
# Get Results
Source: https://docs.lobstr.io/examples/tiktok-hashtag-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from TikTok Hashtag Scraper
Retrieve scraped data from your **TikTok Hashtag Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`.
## Query Parameters
Hash of the squid to get results from.
Page number (default: 1).
## Result Fields
The hashtag this video was collected from (without the leading #). Example: `lobstr`
Position of this video in the hashtag's video feed at scrape time. Example: `1`
Unique TikTok video identifier. Example: `7680941891700935944`
Caption or description of the TikTok video. Example: `GoPro POV: I found a party inside the lobster den #lobster #underwater #pov #party #higgsfield `
Detected language code of the video's caption. Example: `en`
List of hashtags used in the video's own caption. Example: `["lobster", "underwater", "pov", "party", "higgsfield"]`
List of TikTok accounts (@mentions) tagged in the video's caption. Example: `[]`
Date and time the video was published. Example: `2026-09-02T12:17:29Z`
Total number of times the video has been played. Example: `1500000`
Total number of likes on the video. Example: `60900`
Total number of comments on the video. Example: `662`
Total number of times the video has been shared. Example: `23300`
Total number of times the video has been saved to collections. Example: `4940`
Total number of times the video has been reposted. Example: `0`
Duration of the video in seconds. Example: `12`
Width of the video in pixels. Example: `576`
Height of the video in pixels. Example: `1024`
Video resolution definition (e.g. 540p, 720p, 1080p). Example: `540p`
Container format of the video file. Example: `mp4`
Video bitrate in bits per second. Example: `641117`
File size of the video in bytes. Example: `988443`
Whether the video is a paid advertisement. Example: `False`
Whether the author has enabled duets for this video. Example: `True`
Whether the author has enabled stitches for this video. Example: `True`
ISO country code of where the video was created.
Canonical TikTok video page URL. Unlike play\_url/download\_url (signed CDN links tied to the proxy IP that fetched them, and unusable elsewhere), this always works. Example: `https://www.tiktok.com/@kennyslowbird/video/7680941891700935944`
Direct streaming URL for the video. Signed and tied to the proxy IP that fetched it -- confirmed to 403 from any other network, even with full browser TLS impersonation. Use video\_url for a link guaranteed to keep working. Example: `https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-pve-0037c001/osPMAPFpquB5whsYB2iigfBnEmARMIREIyfDUC/?a=1988&bti=ODszNWYuMDE6&&bt=626&ft=-Csk_m.MPD12NpP3Jn-Uxl7FSY3W3wv25ycAp&mime_type=video_mp4&rc=NmQ6Mzk5ODNkZDs7ZGk7N0BpajRqNnA5cm01ZDMzODczNEBiLjIxX19eNl4xLl40YmIwYSNoNHFtMmRzc2BhLS1kMTFzcw%3D%3D&expire=1788988144&l=202609072108521145CE1BA5A6675D4565&ply_type=2&policy=2&signature=3a1dd0cf1932bd6dffda58177499342f&tk=tt_chain_token&btag=e000b0000`
Direct download URL for the video. Same IP-binding limitation as play\_url -- use video\_url for a link guaranteed to keep working.
URL of the video thumbnail (cover image). Example: `https://p19-common-sign.tiktokcdn-eu.com/tos-alisg-p-0037/ocGMEGfYAbdQDHfqSLQLI8HYQFfesTwwcAGXRI~tplv-tiktokx-origin.image?dr=10395&x-expires=1788987600&x-signature=o7cWRDAV2XzbPvIXQ%2FcYS24BwIc%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=no1a`
URL of the animated dynamic cover (GIF-like preview). Example: `https://p16-common-sign.tiktokcdn-eu.com/tos-alisg-p-0037/o4QwQEGJGXYYAyGqILEReDTfS8bRfIjAQHLfF2~tplv-tiktokx-origin.image?dr=10395&x-expires=1788987600&x-signature=mzIZiNAQrJvIOm40dm1XaHHQpvU%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=no1a`
Unique identifier of the music track used in the video. Example: `7639424214639167489`
Title of the music track used in the video. Example: `Movin' To The Sun`
Artist name of the music track used in the video. Example: `HUGEL & Imael Angel & Ultra Naté`
Direct URL to stream the audio track. Example: `https://sf16-music.tiktokcdn-eu.com/obj/tos-alisg-ve-2774/owYPQBSopi5XcEAa58MUvAixnPAWIp93tiLnr`
URL of the music track's cover art. Example: `https://p77-sg.tiktokcdn.com/aweme/200x200/tos-alisg-v-2774/oYmBAs9EvpUPMEAiAHxSsYrqAWiBAmAQCawAV.jpeg`
Duration of the music track in seconds. Example: `48`
Whether the audio is an original sound created by the author. Example: `False`
Whether the music track is under copyright protection. Example: `False`
Unique numeric identifier of the video author. Example: `6829825193482929158`
Secondary unique identifier of the author (used in API calls). Example: `MS4wLjABAAAAzeLkt1OZZGvXNE4urbCiOvdjecJhZuPMjTzCM_RZYVnW9gG0AiIOEQiv7u75lmX0`
TikTok username (handle) of the video author. Example: `kennyslowbird`
Display name of the video author. Example: `Kenny`
Whether the author's account is verified by TikTok. Example: `False`
Whether the author's account is set to private. Example: `False`
Biography or description on the author's TikTok profile Example: `⬆️ 2.7 million across all platforms
🔥Music Release & Collabs & partnerships🔥
📩 kennyslowbird@gmail.com 📩
🔥 Higgsfield Partner 🔥
⬇️ buy my secret ⬇️`
Number of followers the author has. Example: `1700000`
Number of accounts the author is following. Example: `381`
Total likes received by the author across all their videos. Example: `67900000`
Total number of videos published by the author. Example: `1893`
Total number of likes the author has given to other videos. Example: `2209`
Number of mutual followers (friends) the author has. Example: `0`
URL of the author's profile picture. Example: `https://p16-common-sign.tiktokcdn-eu.com/tos-maliva-avt-0068/a0d2d60a3d45a05ea7d2220c875cba22~tplv-tiktokx-cropcenter:100:100.jpeg?dr=10399&refresh_token=3b6951e9&x-expires=1788987600&x-signature=MP2LVGgC8j02XYhQROa%2BKDQ00HE%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=no1a`
List of visual effects/stickers applied to the video. Example: `[{"id": "1911622141", "name": "IPHONE EVENING CAPTURE", "use_count": 0}, {"id": "127702155", "name": "comfy", "use_count": 0}]`
Date and time when this video was scraped. Example: `2026-09-07T21:09:20.934Z`
## Code Examples
```bash cURL theme={null}
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=YOUR_SQUID_HASH" \
-d "page=1"
```
```python Python theme={null}
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "YOUR_SQUID_HASH", "page": 1},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"hashtag": "lobstr", "hashtag_rank": 1, "video_id": "7680941891700935944", "description": "GoPro POV: I found a party inside the lobster den #lobster #underwater #pov #party #higgsfield ", "text_language": "en", "hashtags": ["lobster", "underwater", "pov", "party", "higgsfield"], "mentions": [], "created_at": "2026-09-02T12:17:29Z", "play_count": 1500000, "like_count": 60900}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/tiktok-hashtag-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure TikTok Hashtag Scraper settings
Configure your **TikTok Hashtag Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| max\_unique\_results\_per\_run | int | — | Maximum number of unique videos retrieved across all tasks in the entire run. Leave empty for unlimited. |
| max\_results | integer | — | Optional cap on the number of videos retrieved per hashtag. TikTok's own hashtag feed practically maxes out around 400-800 videos. |
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"max_results": 500,
"max_unique_results_per_run": 2000
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"max_results": 500,
"max_unique_results_per_run": 2000,
},
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"max_results": 500, "max_unique_results_per_run": 2000}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/tiktok-profile-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your TikTok Profile Scraper squid
Add URLs or inputs to your **TikTok Profile Scraper** squid.
Crawler ID: `089d76c66c2fd5c57d7ce7338d9ae7de`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
TikTok profile URL or handle. Example: `https://www.tiktok.com/@mrbeast`
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "089d76c66c2fd5c57d7ce7338d9ae7de",
"tasks": [
{"url": "https://www.tiktok.com/@mrbeast"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "089d76c66c2fd5c57d7ce7338d9ae7de",
"tasks": [
{"url": "https://www.tiktok.com/@mrbeast"}
]
}
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.tiktok.com/@mrbeast"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/tiktok-profile-scraper/credit-cost
Credit cost for the TikTok Profile Scraper
1 credit per video. With `profile_only: true`, 1 credit for the profile row.
# Get Results
Source: https://docs.lobstr.io/examples/tiktok-profile-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from TikTok Profile Scraper
Retrieve scraped data from your **TikTok Profile Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Page number (default: 1)
## Result Fields
Position of this video in the profile's feed at scrape time
Unique TikTok video identifier. Example: `7123456789012345678`
Caption of the TikTok video. Example: `Crazy experiment gone wrong!`
Detected language code of the caption
Hashtags in the caption
@-mentions in the caption
Date and time the video was published (UTC). Example: `2026-09-12T18:00:00Z`
Total number of plays. Example: `45000000`
Total number of likes. Example: `3200000`
Total number of comments
Total number of shares
Total number of saves to collection
Total number of reposts
Duration of the video in seconds
Width of the video in pixels
Height of the video in pixels
Video resolution. Example: `1080p`
Container format of the video file
Video bitrate in bits per second
File size in bytes
Whether the video is a paid advertisement
True when the post is a photo slideshow
Ordered list of image URLs when is\_slideshow is true
Whether the author has enabled duets
Whether the author has enabled stitches
ISO country code of where the video was created
Canonical TikTok video page URL
Direct streaming URL (signed, tied to the proxy)
Direct download URL (signed, tied to the proxy)
URL of the video thumbnail
Original unprocessed cover image URL
URL of the animated dynamic cover
Subtitle/caption tracks available for the video
Visual effects/stickers applied to the video
Unique identifier of the music track
Title of the music track
Artist name of the music track
Direct URL to stream the audio track
URL of the music track's cover art
Duration of the music track in seconds
Whether the audio is an original sound
Whether the music track is under copyright
TikTok numeric user id of the profile
TikTok secUid of the profile
Profile handle (uniqueId), lowercase, without @. Example: `mrbeast`
Display name of the profile
Profile bio
External link in the profile bio
Profile picture URL
Whether the profile carries TikTok's verified badge
Whether the profile is private
Number of followers. Example: `200000000`
Number of accounts followed
Total likes received by the profile
Number of videos on the profile
Number of mutual follows
Number of likes the profile has given
Whether flagged as commerce account
Whether profile is a TikTok Shop seller
Whether flagged as organization account
Id of the profile's live room
Date and time the TikTok account was created
Profile's interface language code
Canonical TikTok profile URL
The profile URL or handle given as task input
Date and time when this row was scraped
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"video_id": "7123456789012345678", "description": "Crazy experiment gone wrong!", "play_count": 45000000, "like_count": 3200000, "author_username": "mrbeast", "author_follower_count": 200000000, "created_at": "2026-09-12T18:00:00Z"}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/tiktok-profile-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure TikTok Profile Scraper settings
Configure your **TikTok Profile Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| rows | integer | — | Number of rows returned per API page |
| profile\_only | boolean | false | Collect only the account's profile stats as a single row, without videos |
| max\_unique\_results\_per\_run | integer | — | Max unique videos across all tasks in the run |
| max\_results | integer | — | Cap on the number of videos per profile |
| fetch\_since | string | — | Stop scraping when videos older than this threshold are reached |
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/089d76c66c2fd5c57d7ce7338d9ae7de \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"max_results": 100,
"fetch_since": "30d"
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/089d76c66c2fd5c57d7ce7338d9ae7de",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"max_results": 100,
"fetch_since": "30d"
}
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"profile_only": false, "max_results": 100, "fetch_since": "30d"}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/tiktok-top-ads-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add keyword search tasks to extract top ads from TikTok
Add keyword-based search tasks to your squid. The scraper will extract top performing ads from TikTok's Creative Center based on your search terms.
Crawler ID: `b5079ede3002655d286a03ad29604ac6`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the tiktok-top-ads-scraper crawler |
| **tasks** | array | Yes | Array of task objects, each containing a `keyword` field |
## Task Fields
| Field | Type | Required | Description |
| - | - | - | - |
| **keyword** | string | Yes | Search term you want to get TikTok Ads from (e.g., "fitness", "skincare", "cooking") |
Use specific keywords related to your industry or niche for more relevant ad results.
You can add multiple keywords in a single request to analyze ads across different topics.
Results are retrieved from TikTok's Creative Center Top Ads library.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/api/v2/squid/YOUR_SQUID_ID/task" \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"keyword": "fitness"
}'
```
```python Python theme={null}
import requests
API_TOKEN = "YOUR_API_TOKEN"
SQUID_ID = "YOUR_SQUID_ID"
url = f"https://api.lobstr.io/api/v2/squid/{SQUID_ID}/task"
headers = {
"Authorization": f"Token {API_TOKEN}",
"Content-Type": "application/json"
}
data = {
"keyword": "fitness"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
```
## Response
```json 200 theme={null}
{
"id": "task_abc123",
"squid_id": "YOUR_SQUID_ID",
"status": "pending",
"keyword": "fitness",
"created_at": "2024-01-15T10:30:00Z"
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/tiktok-top-ads-scraper/credit-cost
Credit cost for the TikTok Top Ads Scraper
1 credit per ad.
# Get Results
Source: https://docs.lobstr.io/examples/tiktok-top-ads-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from TikTok Top Ads Scraper
Retrieve scraped data from your **TikTok Top Ads Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique TikTok internal identifier for the ad. Example: `7183244447446040577`
Direct URL to the ad listing in TikTok Ads Library. Example: `https://ads.tiktok.com/business/creativecenter/topads/7183244447446040577`
Title or headline of the TikTok advertisement. Example: `Omg Top War is SOOO fun!!`
Name of the brand running the ad. Example: `Top War: Battle Game`
Relative cost or spend level indicator of the ad. Example: `2`
Click-through rate (CTR) of the ad. Example: `0.16`
Whether the ad is bookmarked in TikTok Ads Library. Example: `false`
Internal key for the ad's industry category. Example: `label_25310000000`
Industry category the ad belongs to. Example: `Strategy`
Whether this ad was returned via a search in TikTok Ads Library. Example: `false`
Number of likes the ad video received. Example: `1316378`
Internal key for the campaign objective. Example: `campaign_objective_app_install`
Campaign objective (e.g. App Installs, Traffic, Conversions). Example: `App Installs`
Category tag assigned to the ad in TikTok Ads Library. Example: `3`
Internal TikTok identifier for the ad video. Example: `v0911dg40001cen4er3c77ubsnsedsp0`
Duration of the ad video in seconds. Example: `34.368`
URL of the ad video's thumbnail image. Example: `https://p16-sign-va.tiktokcdn.com/tos-maliva-v-2c3654-us/486619c74ee8418fba7fa56e4ca774ad~tplv-noop.image?dr=18692&refresh_token=9e8e25b8&x-expires=1769020412&x-signature=jNdfeXCC98Xb3JPjqjh0CiqPEtg%3D&t=9276707c&ps=14f1eb3e&shp=9e36835a&shcp=317596d8&idc=my`
URL of the ad video file at 720p resolution. Example: `https://v16m-default.tiktokcdn.com/9afb882c10114d99b9b0186102ce930a/69711bfc/video/tos/maliva/tos-maliva-v-2c3654-us/oskBSNsbfKpj8BEvQdTk1m5nQDdRJ2gflHrcIa/?a=0&bti=NTU4QDM1NGA%3D&ch=0&cr=0&dr=0&lr=tiktok_business&cd=0%7C0%7C0%7C0&cv=1&br=4390&bt=2195&cs=0&ds=3&ft=cApXJCz7ThWHcWX01GZmo0P&mime_type=video_mp4&qs=0&rc=OjNlOmc6Njg5OTQ0Njs7Z0BpM3ZocWU6ZnU3aDQzN2c0M0AyLzNgL18yNTExMzZgL2JgYSNtYXBwcjQwYmtgLS1kLjZzcw%3D%3D&vvpl=1&l=202601212032587548419764747B268087&btag=e00088000`
URL of the ad video file at 540p resolution. Example: `https://v16m-default.tiktokcdn.com/0d3b90a85935bd1edad867f6de9bf21f/69711bfc/video/tos/maliva/tos-maliva-v-2c3654-us/ooRHdsQQJXE8kDkmfn15vrbfVdnDBBNINgSjlK/?a=0&bti=NTU4QDM1NGA%3D&ch=0&cr=0&dr=0&lr=tiktok_business&cd=0%7C0%7C0%7C0&cv=1&br=3180&bt=1590&cs=0&ds=6&ft=cApXJCz7ThWHcWX01GZmo0P&mime_type=video_mp4&qs=0&rc=NTY1ZWY2aTs4NTVoZWk8O0BpM3ZocWU6ZnU3aDQzN2c0M0A2Nl9iYWNfNWAxLy1gMy8wYSNtYXBwcjQwYmtgLS1kLjZzcw%3D%3D&vvpl=1&l=202601212032587548419764747B268087&btag=e00088000`
Width of the ad video in pixels. Example: `720`
Height of the ad video in pixels. Example: `1280`
Keywords associated with the ad in TikTok Ads Library
URL of the landing page the ad directs users to
Number of times the ad video was shared
Platform where the ad is served (e.g. TikTok)
Number of comments on the ad video
ISO 2-letter country code of the ad's target region
Whether the ad has a summary section in TikTok Ads Library
Highlight or badge label shown on the ad in TikTok Ads Library
List of campaign objectives associated with the ad
Creative pattern label categorizing the ad's visual format
Internal key identifying the ad source
Whether the ad video includes a voice-over track
Raw detail data returned by the TikTok Ads Library API
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 22424,
"object": "result",
"squid": "382c3dfe84f18e2deb860db2ffea7f63",
"run": "74e47042fb999e9edafb0f7a003c3795",
"internal_id": "7183244447446040577",
"url": "https://ads.tiktok.com/business/creativecenter/topads/7183244447446040577",
"ad_title": "Omg Top War is SOOO fun!!",
"brand_name": "Top War: Battle Game",
"cost": 2,
"ctr": 0.16,
"favorite": false,
"industry_key": "label_25310000000",
"industry": "Strategy",
"is_search": false,
"like": 1316378,
"objective_key": "campaign_objective_app_install",
"objective": "App Installs",
"tag": 3,
"video_info_vid": "v0911dg40001cen4er3c77ubsnsedsp0",
"video_info_duration": 34.368,
"video_info_cover": "https://p16-sign-va.tiktokcdn.com/tos-maliva-v-2c3654-us/486619c74ee8418fba7fa56e4ca774ad~tplv-noop.image?dr=18692&refresh_token=9e8e25b8&x-expires=1769020412&x-signature=jNdfeXCC98Xb3JPjqjh0CiqPEtg%3D&t=9276707c&ps=14f1eb3e&shp=9e36835a&shcp=317596d8&idc=my",
"video_info_video_url_720p": "https://v16m-default.tiktokcdn.com/9afb882c10114d99b9b0186102ce930a/69711bfc/video/tos/maliva/tos-maliva-v-2c3654-us/oskBSNsbfKpj8BEvQdTk1m5nQDdRJ2gflHrcIa/?a=0&bti=NTU4QDM1NGA%3D&ch=0&cr=0&dr=0&lr=tiktok_business&cd=0%7C0%7C0%7C0&cv=1&br=4390&bt=2195&cs=0&ds=3&ft=cApXJCz7ThWHcWX01GZmo0P&mime_type=video_mp4&qs=0&rc=OjNlOmc6Njg5OTQ0Njs7Z0BpM3ZocWU6ZnU3aDQzN2c0M0AyLzNgL18yNTExMzZgL2JgYSNtYXBwcjQwYmtgLS1kLjZzcw%3D%3D&vvpl=1&l=202601212032587548419764747B268087&btag=e00088000",
"video_info_video_url_540p": "https://v16m-default.tiktokcdn.com/0d3b90a85935bd1edad867f6de9bf21f/69711bfc/video/tos/maliva/tos-maliva-v-2c3654-us/ooRHdsQQJXE8kDkmfn15vrbfVdnDBBNINgSjlK/?a=0&bti=NTU4QDM1NGA%3D&ch=0&cr=0&dr=0&lr=tiktok_business&cd=0%7C0%7C0%7C0&cv=1&br=3180&bt=1590&cs=0&ds=6&ft=cApXJCz7ThWHcWX01GZmo0P&mime_type=video_mp4&qs=0&rc=NTY1ZWY2aTs4NTVoZWk8O0BpM3ZocWU6ZnU3aDQzN2c0M0A2Nl9iYWNfNWAxLy1gMy8wYSNtYXBwcjQwYmtgLS1kLjZzcw%3D%3D&vvpl=1&l=202601212032587548419764747B268087&btag=e00088000",
"video_info_width": 720,
"video_info_height": 1280,
"keywords": null,
"landing_page": null,
"share": null,
"source": null,
"comment": null,
"country_code": null,
"has_summary": null,
"highlight_text": null,
"objectives": null,
"pattern_label": null,
"source_key": null,
"voice_over": null,
"detail_raw": null,
"functions": null,
"native_id": 22424
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/tiktok-top-ads-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the TikTok Top Ads Scraper parameters
Configure the scraper parameters to control how TikTok ads are filtered and sorted. These settings determine region, industry, objective, and other filtering criteria.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **region** | string | World | Specify a predetermined region for your search (e.g., `United States`, `France`, `Germany`) |
| **industry** | string | All industries | Filter by industry (e.g., `Beauty & Personal Care`, `Games`, `E-Commerce (Non-app)`) |
| **objective** | string | All objectives | Campaign objective filter: `Conversions`, `Lead Generation`, `Traffic`, `Video Views`, etc. |
| **like** | string | All likes | Filter by engagement percentile: `Top 1~20%`, `Top 21~40%`, etc. |
| **time\_range** | string | Last 7 days | Ad publication period: `Last 7 days`, `Last 30 days`, `Last 180 days` |
| **sort\_by** | string | For You | Sorting option: `For You`, `Reach`, `CTY`, `2s Views Rate`, `6s Views Rate` |
| **functions.ad\_details** | boolean | false | Fetch full ad details including landing page URL and additional metadata (1 credit per ad) |
## Available Regions
World, Argentina, Australia, Austria, Bahrain, Belarus, Belgium, Brazil, Cambodia, Canada, Chile, Colombia, Czechia, Denmark, Ecuador, Egypt, Finland, France, Germany, Greece, Hungary, Indonesia, Iraq, Ireland, Israel, Italy, Japan, Jordan, Kazakhstan, Kuwait, Lebanon, Malaysia, Mexico, Morocco, Netherlands, New Zealand, Norway, Oman, Pakistan, Peru, Philippines, Poland, Portugal, Qatar, Romania, Saudi Arabia, Singapore, South Africa, South Korea, Spain, Sweden, Switzerland, Taiwan, Thailand, Turkey, United Arab Emirates, United Kingdom, United States, Uruguay, Vietnam
## Available Industries
All industries, App Installs, Apparel & Accessories, Appliances, Apps, Baby, Kids & Maternity, Beauty & Personal Care, Business Services, E-Commerce (Non-app), Education, Financial Services, Food & Beverage, Games, Health, Home Improvement, Household Products, Life Services, News & Entertainment, Pets, Sports & Outdoor, Tech & Electronics, Travel, Vehicle & Transportation
Use `sort_by: Reach` to find ads with the highest audience reach for competitive analysis.
Filter by `like: Top 1~20%` to see only the most engaging ads.
Combining industry and objective filters helps narrow down ads most relevant to your use case.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "TikTok Top Ads Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"region": "United States",
"industry": "Beauty & Personal Care",
"objective": "Conversions",
"like": "Top 1~20%",
"time_range": "Last 30 days",
"sort_by": "Reach",
"functions": {
"ad_details": false
}
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Update scraper settings
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "TikTok Top Ads Scraper (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"region": "United States",
"industry": "Beauty & Personal Care",
"objective": "Conversions",
"like": "Top 1~20%",
"time_range": "Last 30 days",
"sort_by": "Reach",
"functions": {
"ad_details": False # Enable for full ad details (1 credit per ad)
}
}
}
)
data = response.json()
print(f"Settings updated: {data['name']}")
```
## Response
```json 201 theme={null}
{
"name": "TikTok Top Ads Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"region": "United States",
"industry": "Beauty & Personal Care",
"objective": "Conversions",
"like": "Top 1~20%",
"time_range": "Last 30 days",
"sort_by": "Reach",
"functions": {
"ad_details": false
}
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/tiktok-video-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your TikTok Video Scraper squid
Add URLs or inputs to your **TikTok Video Scraper** squid. Each task object must include the required fields below.
Crawler ID: `1e6cba50f2713539a2b0ac784184ed92`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task supports the fields below.
## Task Fields
Full TikTok video URL to scrape. Example: `https://www.tiktok.com/@bellapoarch/video/6862153058223197445`
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{ "url": "https://www.tiktok.com/@bellapoarch/video/6862153058223197445" },
{ "url": "https://www.tiktok.com/@username/video/7234567890123456789" }
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_hash = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"squid": squid_hash,
"tasks": [
{"url": "https://www.tiktok.com/@bellapoarch/video/6862153058223197445"},
{"url": "https://www.tiktok.com/@username/video/7234567890123456789"}
]
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
for task in data["tasks"]:
print(f" {task['id']}: {task['params']['url']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"created_at": "2025-06-24T11:11:30.222467",
"is_active": true,
"params": {
"url": "https://www.tiktok.com/@bellapoarch/video/6862153058223197445"
},
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/tiktok-video-scraper/credit-cost
Credit cost for the TikTok Video Scraper
1 credit per video
# Get Results
Source: https://docs.lobstr.io/examples/tiktok-video-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from TikTok Video Scraper
Retrieve scraped data from your **TikTok Video Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from.
Hash of a specific run (optional).
Page number (default: 1).
Results per page (default: 50, max: 100).
## Result Fields
Unique TikTok identifier for the video. Example: `6862153058223197445`
Caption/description text of the video.
ISO 8601 timestamp of when the video was published. Example: `2020-08-17T12:34:56Z`
Total number of plays/views. Example: `52300000`
Total number of likes. Example: `3100000`
Total number of comments. Example: `45000`
Number of times the video was shared. Example: `120000`
Number of times the video was saved/collected. Example: `870000`
Number of reposts. Example: `0`
Video duration in seconds. Example: `15`
Video width in pixels. Example: `576`
Video height in pixels. Example: `1024`
Video quality definition. Example: `540p`
Video bitrate. Example: `1243660`
File size in bytes. Example: `2330107`
Whether the video is an advertisement. Example: `false`
Whether duets are enabled for this video. Example: `true`
Whether stitches are enabled for this video. Example: `true`
Country code where the video was created. Example: `US`
URL to stream the video.
URL to download the video.
URL of the video thumbnail/cover image.
URL of the animated cover image.
Unique identifier for the music track used. Example: `6862153058223197445`
Title of the music track. Example: `M to the B`
Artist name of the music track. Example: `Millie B`
URL to play the music track.
Duration of the music track in seconds. Example: `60`
Whether the audio is the creator's original sound. Example: `false`
Whether the music track is copyrighted. Example: `true`
Unique TikTok user ID of the video author. Example: `6569595380449902597`
Secondary unique identifier for the author's account.
TikTok username (handle) of the author. Example: `bellapoarch`
Display name of the author. Example: `Bella Poarch`
Whether the author's account is verified. Example: `true`
Bio/description from the author's profile.
Number of followers the author has. Example: `92800000`
Number of accounts the author follows. Example: `728`
Total likes received across all the author's videos. Example: `2200000000`
Total number of videos published by the author. Example: `421`
URL of the author's profile picture.
Whether this result is a related video (not directly from a task URL). Example: `false`
The video ID of the task that triggered this related result. Only set when `is_related` is `true`.
The original task URL that produced this result.
ISO 8601 timestamp of when this result was scraped.
## Code Examples
```bash cURL theme={null}
curl -X GET "https://api.lobstr.io/v1/results?squid=YOUR_SQUID_HASH&page=1&page_size=50" \
-H "Authorization: Token YOUR_API_KEY"
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
params = {
"squid": "YOUR_SQUID_HASH",
"page": 1,
"page_size": 50
}
all_results = []
url = f"{BASE_URL}/results"
while True:
response = requests.get(url, headers=headers, params=params)
data = response.json()
all_results.extend(data["data"])
print(f"Fetched page {data['page']} of {data['total_pages']}")
if data["next"] is None:
break
url = data["next"]
params = {}
print(f"\nTotal videos collected: {len(all_results)}")
for video in all_results[:5]:
print(f"- @{video.get('author_username')}: {video.get('description', '')[:60]} ({video.get('play_count', 0):,} plays)")
```
## Response
```json 200 theme={null}
{
"total_results": 2,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 2,
"data": [
{
"id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"object": "result",
"squid": "YOUR_SQUID_HASH",
"run": "RUN_HASH",
"video_id": "6862153058223197445",
"description": "😛✌️ #fyp #foryou #foryoupage",
"created_at": "2020-08-17T12:34:56Z",
"play_count": 52300000,
"like_count": 3100000,
"comment_count": 45000,
"share_count": 120000,
"collect_count": 870000,
"repost_count": 0,
"duration": 15,
"width": 576,
"height": 1024,
"definition": "540p",
"is_ad": false,
"duet_enabled": true,
"stitch_enabled": true,
"location_created": "US",
"music_title": "M to the B",
"music_author": "Millie B",
"music_original": false,
"music_is_copyrighted": true,
"author_username": "bellapoarch",
"author_nickname": "Bella Poarch",
"author_verified": true,
"author_follower_count": 92800000,
"is_related": false,
"related_to_video_id": null,
"input_video_url": "https://www.tiktok.com/@bellapoarch/video/6862153058223197445",
"scraping_time": "2026-03-20T09:15:00.000Z"
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/tiktok-video-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure settings for your TikTok Video Scraper squid
Update the configuration of your **TikTok Video Scraper** squid. Pass crawler-specific settings inside the `params` object.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Crawler-specific settings. See fields below.
## Settings Fields
Number of related videos to also scrape for each task URL. Leave empty or set to `0` to disable. Example: `5`
Set `max_related_videos_per_post` to expand your dataset — for each input URL, the scraper will also collect that many related videos. Results from related videos have `is_related: true` and include a `related_to_video_id` field.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "TikTok Video Scraper",
"params": {
"max_related_videos_per_post": 5
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_hash = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_hash}",
headers=headers,
json={
"name": "TikTok Video Scraper",
"params": {
"max_related_videos_per_post": 5
}
}
)
data = response.json()
print(f"Squid updated: {data['name']}")
print(f"Related videos per post: {data['params'].get('max_related_videos_per_post')}")
```
## Response
```json 201 theme={null}
{
"id": "YOUR_SQUID_HASH",
"name": "TikTok Video Scraper",
"crawler": {
"id": "1e6cba50f2713539a2b0ac784184ed92",
"name": "TikTok Video Scraper",
"slug": "tiktok-video-scraper"
},
"params": {
"max_related_videos_per_post": 5
},
"concurrency": 5,
"export_unique_results": true,
"to_complete": true,
"no_line_breaks": false,
"status": "idle",
"created_at": "2025-01-20T10:15:00.000000",
"updated_at": "2025-01-27T14:35:00.000000"
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/tripadvisor-details-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your TripAdvisor Restaurant Details Scraper squid
Add TripAdvisor restaurant URLs to your **TripAdvisor Restaurant Details Scraper** squid.
Crawler ID: `be5fc6c070c94f1606c99c2f1f488033`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
URL of a TripAdvisor restaurant page. Supported TripAdvisor domains: `.com`, `.fr`, `.co.uk`, `.it`, `.de`, `.es`, `.ca`, `.in`, `.jp`. For the fastest runs, group URLs that share the same TripAdvisor domain (all `.com` together, all `.fr` together, …) in the same squid: each switch between domains forces a new anti-bot challenge and slows the run down. Ranking details (city, position) are richest on `.com` URLs. Example: `https://www.tripadvisor.com/Restaurant_Review-g187175-d806529-Reviews-Michel_Sarran-Toulouse_Haute_Garonne_Occitanie.html`
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.tripadvisor.com/Restaurant_Review-g187175-d806529-Reviews-Michel_Sarran-Toulouse_Haute_Garonne_Occitanie.html"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.tripadvisor.com/Restaurant_Review-g187175-d806529-Reviews-Michel_Sarran-Toulouse_Haute_Garonne_Occitanie.html"}
],
},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.tripadvisor.com/Restaurant_Review-g187175-d806529-Reviews-Michel_Sarran-Toulouse_Haute_Garonne_Occitanie.html"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/tripadvisor-details-scraper/credit-cost
Credit cost for the TripAdvisor Restaurant Details Scraper
1 credit per restaurant row.
# Get Results
Source: https://docs.lobstr.io/examples/tripadvisor-details-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from TripAdvisor Restaurant Details Scraper
Retrieve scraped data from your **TripAdvisor Restaurant Details Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`.
## Query Parameters
Hash of the squid to get results from.
Page number (default: 1).
## Result Fields
### Export Details
TripAdvisor URL of the restaurant. When the same restaurant is submitted on several TripAdvisor domains, the first URL collected is kept. Example: `https://www.tripadvisor.com/Restaurant_Review-g187175-d806529-Reviews-Michel_Sarran-Toulouse_Haute_Garonne_Occitanie.html`
TripAdvisor internal identifier of the restaurant, identical on every TripAdvisor domain. One row per `place_id`. Example: `806529`
Name of the restaurant as listed on TripAdvisor. Example: `Michel Sarran`
Whether TripAdvisor flags the restaurant as permanently closed. Example: `false`
Position of the restaurant in its city ranking. Empty when the listing is closed or delisted. Example: `13`
Total number of restaurants the city ranking is computed against. Example: `1996`
City the ranking refers to. Example: `Toulouse`
Raw ranking sentence as displayed by TripAdvisor. Empty when the listing is closed or delisted. Example: `#13 of 1,996 Restaurants in Toulouse`
Average TripAdvisor rating out of 5. Example: `4.7`
Total number of reviews on TripAdvisor. Example: `1636`
Number of 1-star reviews. Example: `4`
Number of 2-star reviews. Example: `19`
Number of 3-star reviews. Example: `90`
Number of 4-star reviews. Example: `196`
Number of 5-star reviews. Example: `1327`
Aggregate food sub-rating out of 5. `0` means the dimension has never been rated. Example: `4.75`
Aggregate service sub-rating out of 5. `0` means the dimension has never been rated. Example: `4.72`
Aggregate value-for-money sub-rating out of 5. `0` means the dimension has never been rated. Example: `4.35`
Aggregate atmosphere sub-rating out of 5. `0` means the dimension has never been rated. Example: `4.37`
TripAdvisor Travelers' Choice award code for the active year (e.g. `COE`, `BOTB`). Empty when the restaurant has no award. Example: `COE`
Year of the Travelers' Choice award. Empty when the restaurant has no award. Example: `2026`
Whether the restaurant carries a MICHELIN Guide award on its TripAdvisor page. Example: `true`
Number of MICHELIN stars. Empty for a MICHELIN distinction that is not a star (e.g. Bib Gourmand). Example: `1`
Year of the MICHELIN award. Example: `2026`
Cuisine types listed on TripAdvisor. Example: `["French", "European", "Healthy"]`
Price range indicator. Example: `$$$$`
Full formatted address of the restaurant. Example: `21 Boulevard Armand Duportal, 31000, Toulouse France`
Contact phone number of the restaurant. Example: `+33 5 61 12 32 32`
Contact email address published by the restaurant on TripAdvisor. Empty when the restaurant has not published one. Example: `contact@michel-sarran.com`
Official website URL of the restaurant. Example: `http://www.michel-sarran.com`
Latitude coordinate of the restaurant. Example: `43.607277`
Longitude coordinate of the restaurant. Example: `1.434596`
## Code Examples
```bash cURL theme={null}
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=YOUR_SQUID_HASH" \
-d "page=1"
```
```python Python theme={null}
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "YOUR_SQUID_HASH", "page": 1},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"url": "https://www.tripadvisor.com/Restaurant_Review-g187175-d806529-Reviews-Michel_Sarran-Toulouse_Haute_Garonne_Occitanie.html", "place_id": 806529, "name": "Michel Sarran", "is_closed": false, "ranking_rank": 13, "ranking_denominator": 1996, "ranking_city": "Toulouse", "ranking_text": "#13 of 1,996 Restaurants in Toulouse", "overall_rating": 4.7, "review_count": 1636, "rating_count_1": 4, "rating_count_2": 19, "rating_count_3": 90, "rating_count_4": 196, "rating_count_5": 1327, "subrating_food": 4.75, "subrating_service": 4.72, "subrating_value": 4.35, "subrating_atmosphere": 4.37, "travelers_choice_award_type": "COE", "travelers_choice_year": 2026, "is_michelin": true, "michelin_stars": 1, "michelin_year": 2026, "cuisines": ["French", "European", "Healthy"], "price_range": "$$$$", "address": "21 Boulevard Armand Duportal, 31000, Toulouse France", "phone": "+33 5 61 12 32 32", "email": "contact@michel-sarran.com", "website": "http://www.michel-sarran.com", "lat": 43.607277, "lng": 1.434596}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/tripadvisor-details-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure TripAdvisor Restaurant Details Scraper settings
Configure your **TripAdvisor Restaurant Details Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| max\_results | integer | — | Maximum number of results to collect per task. One task returns one restaurant, so this is only useful to cap a run. Leave empty for unlimited. |
| max\_unique\_results\_per\_run | integer | — | Maximum number of unique results retrieved across all tasks in the entire run. Leave empty for unlimited. |
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"max_unique_results_per_run": 1000
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"max_unique_results_per_run": 1000,
},
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"max_unique_results_per_run": 1000}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/tripadvisor-restaurants-search-export/add-tasks
POST https://api.lobstr.io/v1/tasks
Add TripAdvisor restaurant search URLs as tasks for scraping restaurant listings
Add TripAdvisor restaurant search URLs to your squid for scraping restaurant listings. The scraper extracts restaurant details including ratings, reviews, contact information, price ranges, location coordinates, and Michelin status from TripAdvisor's restaurant directory.
Crawler ID: `f781435f026b36b19ef74d591a077cb7`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Task Format
Each task should contain a URL from a TripAdvisor restaurant search results page. Search for restaurants by location on TripAdvisor, then use those search URLs as tasks.
## Supported URL Formats
The scraper supports TripAdvisor restaurant search URLs from various regional domains:
Apply filters on TripAdvisor (cuisine type, price range, ratings) before copying the URL to get more targeted restaurant results.
TripAdvisor uses location IDs (g-codes) in URLs. Each city or region has a unique g-code that you can find by searching on the website.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{
"url": "https://www.tripadvisor.fr/Restaurants-g187147-Paris_Ile_de_France.html"
}
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Add TripAdvisor restaurant search URLs as tasks
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"squid": squid_id,
"tasks": [
{"url": "https://www.tripadvisor.fr/Restaurants-g187147-Paris_Ile_de_France.html"},
{"url": "https://www.tripadvisor.com/Restaurants-g60763-New_York_City_New_York.html"}
]
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates skipped: {data['duplicated_count']}")
for task in data["tasks"]:
print(f" Task ID: {task['id']}")
print(f" URL: {task['params']['url']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "82367f24d9450b2222080eed91662968",
"created_at": "2025-07-17T09:06:47.287893",
"is_active": true,
"params": {
"url": "https://www.tripadvisor.fr/Restaurants-g187147-Paris_Ile_de_France.html"
},
"module": 115,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/tripadvisor-restaurants-search-export/credit-cost
Credit cost for the TripAdvisor Restaurants Search Export
1 credit per restaurant.
# Get Results
Source: https://docs.lobstr.io/examples/tripadvisor-restaurants-search-export/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from TripAdvisor Restaurants Search Export
Retrieve scraped data from your **TripAdvisor Restaurants Search Export** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Direct URL to the restaurant listing on TripAdvisor. Example: `https://www.tripadvisor.fr/Restaurant_Review-g187147-d12182791-Reviews-Restaurant_La_Pie_Noir-Paris_Ile_de_France.html`
Unique internal identifier for the restaurant on TripAdvisor. Example: `d12182791`
Name of the restaurant as listed on TripAdvisor. Example: `Restaurant La Pie Noir`
Average TripAdvisor rating out of 5. Example: `4.7`
Total number of customer reviews on TripAdvisor. Example: `665`
Price range indicator (e.g. \$, \$\$, \$\$\$). Example: `€€-€€€`
Cuisine types and dining features listed on TripAdvisor. Example: `Française, Européenne`
Full formatted address of the restaurant. Example: `5 Rue de la Montagne Sainte Genevieve, Paris, Île-de-France, 75005, FR`
Latitude coordinate of the restaurant. Example: `48.849335`
Longitude coordinate of the restaurant. Example: `2.34875`
Contact phone number of the restaurant. Example: `+33 1 43 54 08 99`
Official website URL of the restaurant
URL to the restaurant's menu on TripAdvisor or its website
Email address of the restaurant. Example: `restaurant.lapienoir.bzh@gmail.com`
URL of the restaurant's main cover image on TripAdvisor. Example: `https://dynamic-media-cdn.tripadvisor.com/media/photo-o/19/7a/08/cf/side-view-from-the-street.jpg`
Whether the restaurant has claimed its TripAdvisor listing. Example: `false`
Whether the restaurant appears in the Michelin Guide. Example: `false`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 30880,
"object": "result",
"squid": "ca2852c60196302c6e4c1e18001a204b",
"run": "93284ed660634fd6d188365ce304cf35",
"url": "https://www.tripadvisor.fr/Restaurant_Review-g187147-d12182791-Reviews-Restaurant_La_Pie_Noir-Paris_Ile_de_France.html",
"internal_id": "d12182791",
"name": "Restaurant La Pie Noir",
"score": 4.7,
"ratings": 665,
"price": "€€-€€€",
"features": "Française, Européenne",
"full_address": "5 Rue de la Montagne Sainte Genevieve, Paris, Île-de-France, 75005, FR",
"lat": 48.849335,
"lng": 2.34875,
"phone": "+33 1 43 54 08 99",
"website": null,
"menu": null,
"mail": "restaurant.lapienoir.bzh@gmail.com",
"image_url": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/19/7a/08/cf/side-view-from-the-street.jpg",
"is_claimed": false,
"is_michelin": false,
"functions": null,
"native_id": 30880
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/tripadvisor-restaurants-search-export/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the TripAdvisor Restaurants Scraper parameters and options
Configure your TripAdvisor Restaurants Scraper squid settings to control the maximum number of restaurants to scrape per search.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_results** | integer | unlimited | Maximum number of restaurants to collect per task |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the run |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Start with a smaller max\_results value (e.g., 50) to test your search before scaling up for larger data collection.
TripAdvisor results include both claimed and unclaimed business profiles. Claimed profiles tend to have more complete information.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "TripAdvisor Restaurants Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 100
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "TripAdvisor Restaurants Scraper (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_results": 100
}
}
)
data = response.json()
print(f"Squid updated: {data['name']}")
print(f"Max results: {data['params']['max_results']}")
```
## Response
```json 201 theme={null}
{
"name": "TripAdvisor Restaurants Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 100
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/tripadvisor-reviews-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add TripAdvisor place URLs as tasks to scrape reviews from hotels, restaurants, and attractions
Add TripAdvisor place URLs to your squid for scraping reviews. The scraper extracts comprehensive review data including ratings, review text, user information, travel dates, photos, subratings, owner responses, and more from hotels, restaurants, and attractions on TripAdvisor.
Crawler ID: `83970312f2402accbb3553b326a2c8eb`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Task Format
Each task should contain a URL from a TripAdvisor place page. You can scrape reviews from hotels, restaurants, or attractions.
## Supported URL Formats
The scraper supports TripAdvisor review URLs from various regional domains:
Use the scraper's filter settings (language, rating, fetch\_since) to collect only the reviews you need and reduce credit consumption.
Each place type (hotel, restaurant, attraction) has its own URL format on TripAdvisor. Make sure to use the review page URL, not the overview page.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{
"url": "https://www.tripadvisor.com/Hotel_Review-g60763-d208453-Reviews-Hilton_New_York_Times_Square-New_York_City_New_York.html"
}
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Add TripAdvisor place URLs as tasks
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"squid": squid_id,
"tasks": [
{"url": "https://www.tripadvisor.com/Hotel_Review-g60763-d208453-Reviews-Hilton_New_York_Times_Square-New_York_City_New_York.html"},
{"url": "https://www.tripadvisor.com/Hotel_Review-g60763-d120461-Reviews-The_Knickerbocker-New_York_City_New_York.html"}
]
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates skipped: {data['duplicated_count']}")
for task in data["tasks"]:
print(f" Task ID: {task['id']}")
print(f" URL: {task['params']['url']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "a7d9f45e3b2c8e1f7d6a8b9c4e5f7a9b",
"created_at": "2025-01-27T14:30:00.123456",
"is_active": true,
"params": {
"url": "https://www.tripadvisor.com/Hotel_Review-g60763-d208453-Reviews-Hilton_New_York_Times_Square-New_York_City_New_York.html"
},
"module": 132,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/tripadvisor-reviews-scraper/credit-cost
Credit cost for the TripAdvisor Reviews Scraper
1 credit per review
# Get Results
Source: https://docs.lobstr.io/examples/tripadvisor-reviews-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from TripAdvisor Reviews Scraper
Retrieve scraped data from your **TripAdvisor Reviews Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Review identifier. Example: `1052053091`
Direct URL to the review on TripAdvisor. Example: `https://www.tripadvisor.com/ShowUserReviews-g60763-d208453-r1052053091-Hilton_New_York_Times_Square-New_York_City_New_York.html`
Title or headline of the review. Example: `Excellent hotel`
Rating score. Example: `5`
Travel or visit date. Example: `2026-02`
Publication date. Example: `2026-03-05`
Creation date. Example: `2026-03-05`
Text content. Example: \`Hotel with excellent location, perfectly connected by metro and therefore ideal for getting around the city easily. The rooms are clean, tidy and very comfortable, with a really breathtaking view.
The breakfast is rich and of great quality, with a wide choice of both continental products and English breakfast, all nice and well presented.
Special thanks go to the breakfast staff, Ciro and Francisco, who stood out for their professionalism, kindness and friendliness. They made the experience even more enjoyable, showing great attention to me and my friends.
Thank you very much to Ciro and Francisco!\`
Type of trip (solo, family, business, couple). Example: `FRIENDS`
Number of helpful votes. Example: `0`
Platform where content was published. Example: `MOBILE`
Reviewer's tip about the room
Language code. Example: `en`
Original language. Example: `it`
Current status of the review on TripAdvisor. Example: `PUBLISHED`
Detailed sub-category ratings
List of photo URLs
List of photo IDs attached to the review
Type of translation applied to the review content. Example: `MACHINE`
Machine translation provider identifier. Example: `10`
Name of the product or experience being reviewed. Example: `Hilton New York Times Square`
Unique identifier of the reviewer on TripAdvisor. Example: `49137FAFD99CA18EC8122D6D5E16D5B1`
Full name of the reviewer. Example: `Giovanni`
Username/handle of the reviewer on TripAdvisor. Example: `GiovanniMaro`
Whether user is verified. Example: `false`
User's stated location. Example: `Sicily, Italy`
User location identifier. Example: `187886`
User location name. Example: `Sicily`
Total number of contributions (reviews, photos) by the reviewer. Example: `4`
Number of helpful votes received by the reviewer. Example: `0`
Identifier of the reviewer's avatar image. Example: `452386603`
Available sizes for the reviewer's avatar photo. Example: `[{'url': 'https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1a/f6/df/2b/default-avatar-2020-39.jpg', 'width': 1200, 'height': 1200}]`
URL to the reviewer's TripAdvisor profile. Example: `https://www.tripadvisor.com/Profile/GiovanniMaro`
Unique identifier of the business owner's response. Example: `1052223597`
Text of the business owner's reply to the review. Example: `Dear Giovanni,
It was a pleasure having you stay with us, and we're delighted to hear that your visit left such a positive impression. Our location in the heart of the area makes exploring the city easy, and it's wonderful to know our accommodations provided the comfort, cleanliness, and memorable views that helped make your stay special. We're also glad you enjoyed starting your day with our breakfast, and your kind recognition of Ciro and Francisco will mean so much to them. Their professionalism, warmth, and attentive service reflect the hospitality we strive to provide every day. Thank you for choosing to stay with us and for taking a moment to share your experience. We would love the opportunity to welcome you back to Hilton Times Square whenever your travels bring you this way again.`
Language of owner's response. Example: `en`
Date the business owner's response was published. Example: `2026-03-07`
Name or identifier of the person who responded on behalf of the business. Example: `Front Desk`
Owner's connection type to the listing. Example: `General Manager`
Place identifier. Example: `208453`
Place name. Example: `Hilton New York Times Square`
Type of place. Example: `ACCOMMODATION`
Category of the reviewed place (e.g. restaurant, hotel). Example: `HOTEL`
Total number of reviews for the reviewed place. Example: `8935`
TripAdvisor URL of the reviewed place. Example: `https://www.tripadvisor.com/Hotel_Review-g60763-d208453-Reviews-Hilton_New_York_Times_Square-New_York_City_New_York.html`
Alert or notification status. Example: `false`
Timestamp when the review was scraped. Example: `2026-03-21T20:39:38Z`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 82832,
"object": "result",
"squid": "8022c63552775d4b1f2e07e05e3387e4",
"run": "f027c59d81e7a2954f7a6bd9b1c7c0b3",
"review_id": "1052053091",
"url": "https://www.tripadvisor.com/ShowUserReviews-g60763-d208453-r1052053091-Hilton_New_York_Times_Square-New_York_City_New_York.html",
"title": "Excellent hotel",
"rating": 5,
"travel_date": "2026-02",
"published_date": "2026-03-05",
"created_date": "2026-03-05",
"text": "Hotel with excellent location, perfectly connected by metro and therefore ideal for getting around the city easily. The rooms are clean, tidy and very comfortable, with a really breathtaking view.\n\nThe breakfast is rich and of great quality, with a wide choice of both continental products and English breakfast, all nice and well presented.\n\nSpecial thanks go to the breakfast staff, Ciro and Francisco, who stood out for their professionalism, kindness and friendliness. They made the experience even more enjoyable, showing great attention to me and my friends.\n\nThank you very much to Ciro and Francisco!",
"trip_type": "FRIENDS",
"helpful_votes": 0,
"publish_platform": "MOBILE",
"room_tip": null,
"lang": "en",
"original_language": "it",
"status": "PUBLISHED",
"subratings": null,
"photos": null,
"photo_ids": null,
"translation_type": "MACHINE",
"mt_provider_id": 10,
"product_name": "Hilton New York Times Square",
"user_id": "49137FAFD99CA18EC8122D6D5E16D5B1",
"user_name": "Giovanni",
"username": "GiovanniMaro",
"is_user_verified": false,
"user_location": "Sicily, Italy",
"user_location_id": 187886,
"user_location_name": "Sicily",
"user_total_contributions": 4,
"user_helpful_votes": 0,
"user_avatar_id": "452386603",
"user_avatar_photo_sizes": [
{
"url": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1a/f6/df/2b/default-avatar-2020-39.jpg",
"width": 1200,
"height": 1200
}
],
"user_profile_link": "https://www.tripadvisor.com/Profile/GiovanniMaro",
"owner_response_id": "1052223597",
"owner_response_text": "Dear Giovanni,\nIt was a pleasure having you stay with us, and we're delighted to hear that your visit left such a positive impression. Our location in the heart of the area makes exploring the city easy, and it's wonderful to know our accommodations provided the comfort, cleanliness, and memorable views that helped make your stay special. We're also glad you enjoyed starting your day with our breakfast, and your kind recognition of Ciro and Francisco will mean so much to them. Their professionalism, warmth, and attentive service reflect the hospitality we strive to provide every day. Thank you for choosing to stay with us and for taking a moment to share your experience. We would love the opportunity to welcome you back to Hilton Times Square whenever your travels bring you this way again.",
"owner_response_lang": "en",
"owner_response_published_date": "2026-03-07",
"responder": "Front Desk",
"owner_connection_to_subject": "General Manager",
"place_id": "208453",
"place_name": "Hilton New York Times Square",
"place_type": "ACCOMMODATION",
"place_category": "HOTEL",
"place_total_reviews": 8935,
"place_web_url": "https://www.tripadvisor.com/Hotel_Review-g60763-d208453-Reviews-Hilton_New_York_Times_Square-New_York_City_New_York.html",
"alert_status": false,
"scraping_time": "2026-03-21T20:39:38Z",
"functions": null,
"native_id": 82832
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/tripadvisor-reviews-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the TripAdvisor Reviews Scraper parameters including filters for language, ratings, and date range
Configure your TripAdvisor Reviews Scraper squid settings to control review collection limits and apply filters by language, rating, and recency. These settings help you target specific review types and optimize credit usage.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_results** | integer | unlimited | Maximum number of reviews to collect per listing |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique reviews across all tasks in the run |
| **language** | string | All languages | Filter reviews by language (e.g., `English`, `French`, `German`) |
| **ratings** | string | All ratings | Filter by star rating: `1`, `2`, `3`, `4`, `5` |
| **fetch\_since** | string | null | Stop scraping when items older than this threshold are reached (based on `published_at`). Use a relative duration (24h, 7d, 2w) or an absolute date (YYYY-MM-DD HH:MM:SS) |
| **fetch\_since\_timezone** | string | null | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Only applies when `fetch_since` is an absolute date — ignored for relative values like `24h` or `7d`. See [supported timezones](/docs/timezones). |
## General Settings
Standard squid settings that apply to all scrapers:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Use the language and ratings filters to collect only high-quality reviews in your target language, reducing noise and credit consumption.
Set `fetch_since` to `null` for all reviews, or use a relative duration (`"24h"`, `"7d"`, `"2w"`) or absolute date (`"YYYY-MM-DD HH:MM"`) to collect only recent reviews. When using an absolute date, set `fetch_since_timezone` to interpret it in the correct timezone (e.g. `"Europe/Paris"`).
Reviews include subratings (Value, Rooms, Location, Cleanliness, Service, Sleep Quality) for hotels, providing detailed insights beyond the overall rating.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "TripAdvisor Reviews - NYC Hotels",
"params": {
"max_results": 100,
"language": "English",
"ratings": "5",
"fetch_since": null,
"fetch_since_timezone": null
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_hash = "YOUR_SQUID_HASH"
# Update TripAdvisor Reviews Scraper settings
response = requests.post(f"{BASE_URL}/squids/{squid_hash}",
headers=headers,
json={
"name": "TripAdvisor Reviews - NYC Hotels",
"params": {
"max_results": 100,
"language": "English",
"ratings": "5",
"fetch_since": None, # relative: "7d", absolute: "2026-01-01 00:00:00"
"fetch_since_timezone": None # e.g. "Europe/Paris" — only used with absolute fetch_since
}
}
)
data = response.json()
print(f"Squid updated: {data['name']}")
print(f"Max results per task: {data['params']['max_results']}")
print(f"Language filter: {data['params']['language']}")
print(f"Rating filter: {data['params']['ratings']}")
```
## Response
```json 201 theme={null}
{
"id": "c7ea965333d54a949a9e74ba62029098",
"name": "TripAdvisor Reviews - NYC Hotels",
"crawler": {
"id": 132,
"name": "TripAdvisor Reviews Scraper",
"slug": "tripadvisor-reviews-scraper"
},
"params": {
"max_results": 100,
"language": "English",
"ratings": "5",
"fetch_since": null,
"fetch_since_timezone": null
},
"concurrency": 5,
"export_unique_results": true,
"to_complete": true,
"no_line_breaks": false,
"status": "idle",
"created_at": "2025-01-20T10:15:00.000000",
"updated_at": "2025-01-27T14:35:00.000000"
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/trustpilot-reviews-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Trustpilot Reviews Scraper squid
Add URLs or inputs to your **Trustpilot Reviews Scraper** squid. Each task object must include the required fields below.
Crawler ID: `b3362ab52c6fab3d8897af79cbba380e`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task supports the fields below.
## Task Fields
# Credit Cost
Source: https://docs.lobstr.io/examples/trustpilot-reviews-scraper/credit-cost
Credit cost for the Trustpilot Reviews Scraper
1 credit per review.
# Get Results
Source: https://docs.lobstr.io/examples/trustpilot-reviews-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Trustpilot Reviews Scraper
Retrieve scraped data from your **Trustpilot Reviews Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Direct URL to the review on Trustpilot. Example: `69bf54852955c39180813cb8`
Display name of the reviewer. Example: `Kockey`
Unique identifier of the reviewer on Trustpilot. Example: `5dfce3a5b14ccfc746f29fc9`
URL of the reviewer's profile picture. Example: `https://user-images.trustpilot.com/5dfce3a5b14ccfc746f29fc9/73x73.png`
Date the review was published. Example: `2026-03-22T04:31:33.000Z`
Title or headline of the review. Example: `I was so impressed with the service…`
Full text content of the review. Example: `I was so impressed with the service read the reviews 10 times and they were correct this process was easy with fast approval and funding my credit cards payments were sent in 2 days and balance in my account in 2 days. I was so impressed that I even open a checking account with lending club. I'm thankful that they didn't play games when they said approved in just a few minutes they meant it they didn't change their mind are lie approved meant just that no hoops to jump through. I'm so thankful and will definitely be a long term customer. Customer service was great and very informative I'm just blown away with how smooth everything went thank you lending club you guys rock`
Language the review was written in. Example: `en`
Star rating given by the reviewer (1 to 5). Example: `5`
Level of verification applied to the review. Example: `not-verified`
Total number of reviews the author has written. Example: `7`
Country code of the reviewer. Example: `US`
Date of the experience being reviewed. Example: `2026-03-18T00:00:00.000Z`
Number of likes the review has received. Example: `0`
Number of times the review has been reported
Source or platform where the review originated. Example: `Organic`
Whether the reviewer's identity has been verified. Example: `false`
Whether the review has been verified by Trustpilot. Example: `false`
Response text from the business owner
Date the business owner replied to the review
Date the review was last updated
Number of reviews the author has left for this domain. Example: `1`
Total number of reviews for the business. Example: `11194`
Trustpilot TrustScore of the business. Example: `4.7`
Star rating category of the business (e.g. Excellent, Great). Example: `4.5`
Timestamp when the review was scraped. Example: `2026-03-22T12:57:40Z`
Direct URL to the individual review on Trustpilot. Example: `https://www.trustpilot.com/reviews/abc123`
Trustpilot business unit ID of the company. Example: `4ba4e3da0000640005039fdc`
How the review was verified (e.g. `automatic`, `invitation`). Example: `automatic`
Sentiment of the review text as classified by Trustpilot AI: `positive`, `neutral`, or `negative`. Example: `positive`
Date the company reply was last updated. Example: `2026-03-10T08:00:00Z`
Name of the company being reviewed. Example: `Amazon`
Primary Trustpilot category of the company. Example: `Electronics & Technology`
Trustpilot page URL for the company. Example: `https://www.trustpilot.com/review/amazon.com`
Page number where this review was found during scraping. Example: `1`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 37238,
"object": "result",
"squid": "522ecc754ef9810e4a46b59119a2c883",
"run": "6afbc55c2c99e8f06baaabee716c8ef3",
"review_url": "69bf54852955c39180813cb8",
"author_name": "Kockey",
"author_id": "5dfce3a5b14ccfc746f29fc9",
"author_image": "https://user-images.trustpilot.com/5dfce3a5b14ccfc746f29fc9/73x73.png",
"date_published": "2026-03-22T04:31:33.000Z",
"review_headline": "I was so impressed with the service…",
"review_body": "I was so impressed with the service read the reviews 10 times and they were correct this process was easy with fast approval and funding my credit cards payments were sent in 2 days and balance in my account in 2 days. I was so impressed that I even open a checking account with lending club. I'm thankful that they didn't play games when they said approved in just a few minutes they meant it they didn't change their mind are lie approved meant just that no hoops to jump through. I'm so thankful and will definitely be a long term customer. Customer service was great and very informative I'm just blown away with how smooth everything went thank you lending club you guys rock",
"review_language": "en",
"rating_value": 5,
"verification_level": "not-verified",
"number_of_reviews": 7,
"consumer_country_code": "US",
"experience_date": "2026-03-18T00:00:00.000Z",
"likes": 0,
"report": null,
"review_source": "Organic",
"is_author_verified": false,
"is_review_verified": false,
"owner_reply": null,
"owner_reply_date": null,
"updated_date": null,
"consumer_reviews_on_domain": 1,
"reviews_count": 11194,
"trust_score": 4.7,
"stars": 4.5,
"scraping_time": "2026-03-22T12:57:40Z",
"review_link": null,
"business_unit_id": null,
"review_verification_source": null,
"review_sentiment": null,
"owner_reply_updated_date": null,
"company_name": null,
"company_category": null,
"company_page_url": null,
"page_number": null,
"functions": null,
"native_id": 37238
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/trustpilot-reviews-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Trustpilot Reviews Scraper settings
Configure your Trustpilot Reviews Scraper squid settings. Filter by star rating, language, date, and more to target specific review types.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_results** | integer | 200 | Maximum number of reviews to collect per company page |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique reviews across all tasks in the run |
| **stars** | string | all | Filter by star rating: `all`, `1`, `2`, `3`, `4`, `5` |
| **language** | string | All languages | Filter by review language. Allowed values: `All languages`, `Arabic`, `Chinese (Simplified)`, `Chinese (Traditional)`, `Danish`, `Dutch`, `English`, `Finnish`, `French`, `German`, `Greek`, `Hebrew`, `Indonesian`, `Italian`, `Japanese`, `Korean`, `Norwegian`, `Polish`, `Portuguese`, `Russian`, `Spanish`, `Swedish`, `Thai`, `Turkish`, `Vietnamese` |
| **verified** | boolean | false | Only return reviews from verified purchases |
| **replies** | boolean | false | Include company replies in the results |
| **search** | string | null | Filter reviews by keyword |
| **topics** | string | null | Filter by Trustpilot topic tag |
| **start\_page** | integer | 1 | Page number to start scraping from |
| **fetch\_since** | string | null | Stop scraping when items older than this threshold are reached (based on `published_at`). Use a relative duration (24h, 7d, 2w) or an absolute date (YYYY-MM-DD HH:MM:SS) |
| **fetch\_since\_timezone** | string | null | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Only applies when `fetch_since` is an absolute date — ignored for relative values like `24h` or `7d`. See [supported timezones](/docs/timezones). |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Use `stars: 1` combined with `fetch_since: 7d` to monitor recent negative reviews for reputation management.
Set `verified: true` to focus on reviews from confirmed customers only.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Trustpilot Reviews Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 200,
"stars": "all",
"language": "English",
"verified": false,
"replies": false,
"fetch_since": null
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Trustpilot Reviews Scraper (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_results": 200,
"stars": "all",
"language": "English",
"verified": False,
"replies": False,
"fetch_since": None
}
}
)
data = response.json()
print(f"Settings updated: {data['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Trustpilot Reviews Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 200,
"stars": "all",
"language": "English",
"verified": false,
"replies": false,
"fetch_since": null
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/twitter-followers-following-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Twitter Followers & Following Scraper squid
Add URLs or inputs to your **Twitter Followers & Following Scraper** squid. Each task object must include the required fields below.
Crawler ID: `8c6eed231ba0378c42efbe391f70d6d8`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects. Each task supports the fields below.
## Task Fields
# Credit Cost
Source: https://docs.lobstr.io/examples/twitter-followers-following-scraper/credit-cost
Credit cost for the Twitter Followers & Following Scraper
1 credit per profile
# Get Results
Source: https://docs.lobstr.io/examples/twitter-followers-following-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Twitter Followers & Following Scraper
Retrieve scraped data from your **Twitter Followers & Following Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique identifier combining user\_id and relationship\_type. Example: `769922298715537408_following`
Unique Twitter/X identifier for the account. Example: `769922298715537408`
Display name of the Twitter/X account. Example: `Elon Musk`
Twitter/X handle of the account (without the @ symbol). Example: `elonmusk`
Direct URL to the Twitter/X profile. Example: `https://x.com/elonmusk`
Profile bio/description text. Example: `Tech entrepreneur`
Location shown on the Twitter/X profile. Example: `San Francisco, CA`
Website URL linked on the Twitter/X profile. Example: `https://example.com`
Total number of followers of this Twitter/X account. Example: `180000000`
Total number of accounts this profile follows. Example: `500`
Total number of tweets/posts published by this account. Example: `50000`
Total number of media items (photos and videos) posted by this account. Example: `1200`
Total number of tweets this account has liked. Example: `30000`
Number of public Twitter/X lists this account is included in. Example: `5000`
Date the Twitter/X account was created. Example: `2016-08-24T10:00:00+00:00`
URL of the account's profile picture. Example: `https://pbs.twimg.com/profile_images/12345/photo_normal.jpg`
URL of the account's profile banner/header image. Example: `https://pbs.twimg.com/profile_banners/12345/1234567890`
Whether the account has a Twitter Blue (X Premium) verified checkmark. Example: `false`
Whether the account has a legacy verified checkmark. Example: `false`
Whether the account's tweets are protected (private). Example: `false`
Whether the account's content is flagged as possibly sensitive. Example: `false`
Shape of the profile image displayed on Twitter/X (e.g. Circle, Square). Example: `Circle`
Professional account type (e.g. Creator, Business). Example: `Creator`
Professional category label shown on the profile. Example: `Author`
Whether this user is a 'follower' or 'following' of the scraped account. Example: `following`
Raw JSON user data returned by the Twitter/X API
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 55956,
"object": "result",
"squid": "8f10fa2b9b3429006afaecebd572624f",
"run": "d5316f954b21c55e87579ac984497a1f",
"internal_unique_id": "769922298715537408_following",
"user_id": "769922298715537408",
"name": "Elon Musk",
"screen_name": "elonmusk",
"profile_url": "https://x.com/elonmusk",
"bio": "Tech entrepreneur",
"location": "San Francisco, CA",
"website": "https://example.com",
"followers_count": 180000000,
"following_count": 500,
"tweets_count": 50000,
"media_count": 1200,
"likes_count": 30000,
"listed_count": 5000,
"created_at": "2016-08-24T10:00:00+00:00",
"profile_image_url": "https://pbs.twimg.com/profile_images/12345/photo_normal.jpg",
"profile_banner_url": "https://pbs.twimg.com/profile_banners/12345/1234567890",
"is_blue_verified": false,
"is_verified": false,
"is_protected": false,
"possibly_sensitive": false,
"profile_image_shape": "Circle",
"professional_type": "Creator",
"professional_category": "Author",
"relationship_type": "following",
"_json": null,
"functions": null,
"native_id": 55956
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/twitter-followers-following-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Twitter Followers/Following Scraper settings
Configure your Twitter Followers/Following Scraper squid settings. Choose whether to scrape followers, following, or both for each target account.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **scrape\_followers** | boolean | false | If true, collect the account's followers list |
| **scrape\_following** | boolean | false | If true, collect the accounts the user is following |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the run |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **accounts** | array | Array of linked Twitter account hashes (required) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
This scraper requires a synced Twitter/X account. Add your Twitter cookies in the Accounts section before running.
Enable both `scrape_followers` and `scrape_following` to get a complete picture of an account's network.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Twitter Followers/Following Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"scrape_followers": true,
"scrape_following": false
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Twitter Followers/Following Scraper (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"scrape_followers": True, # Collect followers list
"scrape_following": False # Skip following list
}
}
)
data = response.json()
print(f"Settings updated: {data['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Twitter Followers/Following Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"scrape_followers": true,
"scrape_following": false
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/twitter-profile-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add Twitter profile scraping tasks by screen name
Add Twitter profiles to scrape by providing their screen names (usernames). Each task will retrieve detailed profile information for the specified user.
Crawler ID: `6c5227261fbbd3430f926d409f4c44bf`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the Twitter Profile Scraper |
| **tasks** | array | Yes | Array of task objects, each containing a `screen_name` field |
## Task Object
| Field | Type | Required | Description |
| - | - | - | - |
| **screen\_name** | string | Yes | Twitter username without the @ symbol (e.g., `elonmusk`) |
You can add multiple screen names in a single request to scrape several profiles at once.
The screen\_name should not include the @ symbol - use `elonmusk` not `@elonmusk`.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tasks": [
{
"screen_name": "elonmusk"
}
],
"squid": "YOUR_SQUID_HASH"
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Add Twitter profiles to scrape
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"tasks": [
{"screen_name": "elonmusk"}
],
"squid": squid_id
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "0b1e3fd36e8249ec03220fb04b7fc71c",
"created_at": "2025-07-04T04:52:45.180627",
"is_active": true,
"params": {
"screen_name": "elonmusk"
},
"module": 167,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/twitter-profile-scraper/credit-cost
Credit cost for the Twitter Profile Scraper
1 credit per profile.
# Get Results
Source: https://docs.lobstr.io/examples/twitter-profile-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Twitter Profile Scraper
Retrieve scraped data from your **Twitter Profile Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique internal Twitter/X identifier for the account. Example: `1720665183188922368`
Whether the account has a Twitter Blue (X Premium) verified checkmark. Example: `true`
Shape of the profile image displayed on Twitter/X (e.g. circle, square). Example: `Square`
Description of the affiliate or organization label shown on the profile. Example: `xAI`
Type of affiliate or organization label displayed on the profile. Example: `BusinessLabel`
Date the Twitter/X account was created. Example: `2023-11-04T03:52:34+00:00`
Total number of tweets this account has liked. Example: `79`
Total number of followers of this Twitter/X account. Example: `6434825`
Total number of accounts this profile follows. Example: `3`
Number of public Twitter/X lists this account is included in. Example: `5064`
Bio text shown on the Twitter/X profile. Example: `https://t.co/fqNKQSiLQB
@grok it`
Location shown on the Twitter/X profile. Example: `wherever you are`
Website URL linked on the Twitter/X profile. Example: `https://grok.com`
Total number of media items (photos and videos) posted by this account. Example: `2693370`
Display name of the Twitter/X account. Example: `Grok`
Number of followers excluding Twitter Blue subscribers. Example: `6434825`
Whether the account's content is flagged as possibly sensitive. Example: `false`
URL of the account's profile banner or header image. Example: `https://pbs.twimg.com/profile_banners/1720665183188922368/1740213586`
URL of the account's profile picture. Example: `https://pbs.twimg.com/profile_images/1893219113717342208/Vgg2hEPa_normal.jpg`
Twitter/X handle of the account (without the @ symbol). Example: `grok`
Total number of tweets published by this account. Example: `56218804`
Whether the account is eligible for Twitter Super Follows monetization. Example: `false`
Reason the account is verified (e.g. government, company, notable). Example: `Denne kontoen er verifisert fordi den er tilknyttet @xai på X. Les mer`
Number of subscribers to this account's paid creator content. Example: `0`
Unix timestamp in milliseconds of when the account was verified. Example: `1699406829926`
Raw JSON profile data returned by the Twitter/X API
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 55010,
"object": "result",
"squid": "20d99d002cd0afec5fa3342a8e4c1389",
"run": "b59289ed2963092e5e8f30a09f0cdeca",
"internal_id": "1720665183188922368",
"is_blue_verified": true,
"profile_image_shape": "Square",
"affiliates_highlighted_label_description": "xAI",
"affiliates_highlighted_label_user_label_type": "BusinessLabel",
"created_at": "2023-11-04T03:52:34+00:00",
"favourites_count": 79,
"followers_count": 6434825,
"following_count": 3,
"listed_count": 5064,
"bio": "https://t.co/fqNKQSiLQB\n@grok it",
"location": "wherever you are",
"website": "https://grok.com",
"media_count": 2693370,
"name": "Grok",
"normal_followers_count": 6434825,
"possibly_sensitive": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/1720665183188922368/1740213586",
"profile_image_url_https": "https://pbs.twimg.com/profile_images/1893219113717342208/Vgg2hEPa_normal.jpg",
"screen_name": "grok",
"posts_count": 56218804,
"super_follow_eligible": false,
"verification_info_reason_description_text": "Denne kontoen er verifisert fordi den er tilknyttet @xai på X. Les mer",
"creator_subscriptions_count": 0,
"verified_since_msec": "1699406829926",
"_json": null,
"functions": null,
"native_id": 55010
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/twitter-profile-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Twitter Profile Scraper settings including raw JSON output
Configure your Twitter Profile Scraper squid settings. Control output format, concurrency, and whether to return raw JSON data from Twitter's API.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **json** | boolean | false | If true, returns the complete raw JSON payload for the user profile |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Enable `json: true` to get the complete raw API response for advanced analysis or custom field extraction.
The raw JSON contains additional fields not included in the parsed output.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Twitter Profile Scraper (2)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"json": true
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Update scraper settings
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Twitter Profile Scraper (2)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"json": True # Return raw JSON from Twitter API
}
}
)
print(response.json())
```
## Response
```json 201 theme={null}
{
"name": "Twitter Profile Scraper (2)",
"no_line_breaks": true,
"params": {
"json": true
},
"to_complete": false,
"export_unique_results": true
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/twitter-search-results-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add Twitter search scraping tasks by providing search URLs
Add Twitter search results to scrape by providing search URLs from X.com (Twitter). The scraper will extract tweets matching your search query.
Crawler ID: `1b16ff414d27920fb325b68436dbf5fc`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the Twitter Search Results Scraper |
| **tasks** | array | Yes | Array of task objects, each containing a `url` field |
## Task Object
| Field | Type | Required | Description |
| - | - | - | - |
| **url** | string | Yes | Twitter search URL (e.g., `https://x.com/search?q=keyword&src=typed_query&f=top`) |
## Search URL Parameters
Twitter search URLs support various filters via query parameters:
| Parameter | Description |
| - | - |
| **q** | Search query (URL encoded) |
| **f=top** | Show top results |
| **f=live** | Show latest results |
| **f=user** | Show people results |
| **f=image** | Show image results |
| **f=video** | Show video results |
Perform your search on Twitter/X first, apply filters, then copy the URL to preserve all search parameters.
Use `f=live` to get the most recent tweets matching your query.
Advanced search operators like `from:username`, `since:2024-01-01`, and `filter:media` are supported in the query.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{
"url": "https://x.com/search?q=artificial%20intelligence&src=typed_query&f=top"
}
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Add Twitter search URLs to scrape
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"squid": squid_id,
"tasks": [
{"url": "https://x.com/search?q=artificial%20intelligence&src=typed_query&f=top"}
]
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "9fb224b5e2ce36942a74d1e94dd1cf14",
"created_at": "2025-07-07T09:53:32.017225",
"is_active": true,
"params": {
"url": "https://x.com/search?q=artificial%20intelligence&src=typed_query&f=top"
},
"module": 178,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/twitter-search-results-scraper/credit-cost
Credit cost for the Twitter Search Results Scraper
1 credit per tweet.
# Get Results
Source: https://docs.lobstr.io/examples/twitter-search-results-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Twitter Search Results Scraper
Retrieve scraped data from your **Twitter Search Results Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique internal identifier for the tweet. Example: `1886958273636507688`
Direct URL to the tweet on Twitter/X. Example: `https://twitter.com/ultrabogotano/status/1886958273636507688`
URL of the original tweet (populated if this is a retweet or quote tweet)
Unique identifier of the original tweet (for retweets and quote tweets). Example: `1884600403884380413`
Display name of the tweet author. Example: `Surfer Calavera`
Unique internal Twitter/X identifier of the tweet author. Example: `277545465`
Twitter/X handle of the author (without the @ symbol). Example: `ultrabogotano`
Date and time the tweet was published. Example: `2025-02-05T02:01:25+00:00`
Full text content of the tweet. Example: `Sigan usando todos los sufijos numéricos que quieran, @Tigo_Colombia. Yo les sigo respondiendo como se merecen ya que no han sido capaces de borrar mi número de su base de datos.
@sicsuper https://t.co/qedLjpDMAC`
Total number of times the tweet has been viewed. Example: `343`
Number of times the tweet has been retweeted. Example: `0`
Number of likes the tweet received. Example: `1`
Number of times the tweet has been quoted. Example: `0`
Number of replies to the tweet. Example: `1`
Number of times the tweet has been bookmarked. Example: `1`
Thumbnail URL of the 1st media item in the tweet (0-indexed). Example: `https://pbs.twimg.com/media/Gi_SiztWMAEoLZd.jpg`
Type of the 1st media item (e.g. photo, video, animated\_gif). Example: `photo`
URL of the 1st media item in the tweet. Example: `https://pbs.twimg.com/media/Gi_SiztWMAEoLZd.jpg`
Thumbnail URL of the 2nd media item attached to the tweet. Example: `https://pbs.twimg.com/media/Gi_SizvXoAAbRzD.jpg`
Type of the 2nd media item (e.g. photo, video). Example: `photo`
URL of the 2nd media item attached to the tweet. Example: `https://pbs.twimg.com/media/Gi_SizvXoAAbRzD.jpg`
Thumbnail URL of the 3rd media item attached to the tweet. Example: `https://pbs.twimg.com/media/Gi_SizqWUAAerP8.jpg`
Type of the 3rd media item (e.g. photo, video). Example: `photo`
URL of the 3rd media item attached to the tweet. Example: `https://pbs.twimg.com/media/Gi_SizqWUAAerP8.jpg`
Thumbnail URL of the 4th media item attached to the tweet
Type of the 4th media item (e.g. photo, video)
URL of the 4th media item attached to the tweet
URL of a linked media card (e.g. article preview) embedded in the tweet
Domain of the linked media card embedded in the tweet
Thumbnail image URL of the linked media card
Title of the linked media card embedded in the tweet
Description text of the linked media card
Whether this tweet is a reply to another tweet. Example: `false`
Whether this tweet is a retweet of another tweet. Example: `false`
Whether this tweet quotes another tweet. Example: `true`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 35408,
"object": "result",
"squid": "ba8cbb253043c4013bdf3110f36fa5ed",
"run": "f86fef1dc7b51f51dd8d7844eb707927",
"internal_unique_id": "1886958273636507688",
"tweet_url": "https://twitter.com/ultrabogotano/status/1886958273636507688",
"original_tweet_url": null,
"original_tweet_id": "1884600403884380413",
"name": "Surfer Calavera",
"user_id": "277545465",
"username": "ultrabogotano",
"published_at": "2025-02-05T02:01:25+00:00",
"content": "Sigan usando todos los sufijos numéricos que quieran, @Tigo_Colombia. Yo les sigo respondiendo como se merecen ya que no han sido capaces de borrar mi número de su base de datos.\n@sicsuper https://t.co/qedLjpDMAC",
"views_count": 343,
"retweet_count": 0,
"likes": 1,
"quote_count": 0,
"reply_count": 1,
"bookmarks_count": 1,
"media_0_thumbnail": "https://pbs.twimg.com/media/Gi_SiztWMAEoLZd.jpg",
"media_0_type": "photo",
"media_0_url": "https://pbs.twimg.com/media/Gi_SiztWMAEoLZd.jpg",
"media_1_thumbnail": "https://pbs.twimg.com/media/Gi_SizvXoAAbRzD.jpg",
"media_1_type": "photo",
"media_1_url": "https://pbs.twimg.com/media/Gi_SizvXoAAbRzD.jpg",
"media_2_thumbnail": "https://pbs.twimg.com/media/Gi_SizqWUAAerP8.jpg",
"media_2_type": "photo",
"media_2_url": "https://pbs.twimg.com/media/Gi_SizqWUAAerP8.jpg",
"media_3_thumbnail": "",
"media_3_type": "",
"media_3_url": "",
"binded_media_url": "",
"binded_media_domain": "",
"binded_media_thumbnail_url": "",
"binded_media_title": "",
"binded_media_description": "",
"is_reply": false,
"is_retweeted": false,
"is_quoted": true,
"functions": null,
"native_id": 35408
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/twitter-search-results-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Twitter Search Results Scraper settings
Configure your Twitter Search Results Scraper squid settings. Control the maximum number of results and use `fetch_since` to collect only recent tweets.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_results** | integer | unlimited | Maximum number of tweets to scrape per search query |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the run |
| **fetch\_since** | string | — | Stop scraping when tweets older than this threshold are reached. Use a relative duration (`24h`, `7d`, `2w`) or an absolute date (`YYYY-MM-DD HH:MM:SS`). Works best with Latest search URLs (`&f=live`). |
| **fetch\_since\_timezone** | string | UTC | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`) |
| **sort** | string | From URL | Result ordering: `From URL` keeps whatever order is in the search URL, `Top` sorts by relevance, `Latest` sorts by recency |
| **tweet\_language** | string | — | Restrict to tweets in a specific language (ISO 639-1 code, e.g. `en`, `fr`, `de`) |
| **only\_verified\_users** | boolean | false | Only collect tweets from verified accounts |
| **only\_twitter\_blue** | boolean | false | Only collect tweets from Twitter Blue (X Premium) subscribers |
| **only\_image** | boolean | false | Only collect tweets that contain at least one image |
| **only\_video** | boolean | false | Only collect tweets that contain a video |
| **only\_quote** | boolean | false | Only collect quote tweets |
| **author** | string | — | Only collect tweets from this author (`@handle`) |
| **in\_reply\_to** | string | — | Only collect tweets that are replies to this user (`@handle`) |
| **mentioning** | string | — | Only collect tweets that mention this user (`@handle`) |
| **geotagged\_near** | string | — | Only collect tweets geotagged near this place (city or place name) |
| **within\_radius** | string | — | Radius around `geotagged_near`, e.g. `15km` or `10mi` |
| **geocode** | string | — | Only collect tweets from users within a radius of a lat/long point (format: `lat,lng,radius`) |
| **place\_object\_id** | string | — | Only collect tweets tagged with this Twitter place object ID |
| **minimum\_retweets** | integer | — | Only collect tweets with at least this many retweets |
| **minimum\_favorites** | integer | — | Only collect tweets with at least this many likes |
| **minimum\_replies** | integer | — | Only collect tweets with at least this many replies |
| **start\_date** | string | — | Only collect tweets posted on or after this date (`YYYY-MM-DD`) |
| **end\_date** | string | — | Only collect tweets posted before this date (`YYYY-MM-DD`) |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Use `fetch_since: "24h"` for incremental runs that collect only the last day of tweets. Pair with a Latest search URL (`&f=live`) for the most predictable cutoff behavior.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Twitter Search Results Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 500,
"fetch_since": "7d",
"fetch_since_timezone": "Europe/Paris"
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Twitter Search Results Scraper (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_results": 500,
"fetch_since": "7d",
"fetch_since_timezone": "Europe/Paris"
}
}
)
print(response.json())
```
## Response
```json 201 theme={null}
{
"name": "Twitter Search Results Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 500,
"fetch_since": "7d",
"fetch_since_timezone": "Europe/Paris"
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/twitter-user-tweets-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add Twitter user tweets scraping tasks by screen name
Add Twitter users to scrape tweets from by providing their screen names (usernames). The scraper will retrieve tweets from the specified user's timeline.
Crawler ID: `9d6b83aaf1ae9d5b4a775d223e3eb5df`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the Twitter User Tweets Scraper |
| **tasks** | array | Yes | Array of task objects, each containing a `screen_name` field |
## Task Object
| Field | Type | Required | Description |
| - | - | - | - |
| **screen\_name** | string | Yes | Twitter username without the @ symbol (e.g., `elonmusk`) |
You can add multiple screen names in a single request to scrape tweets from several users at once.
The screen\_name should not include the @ symbol - use `elonmusk` not `@elonmusk`.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tasks": [
{
"screen_name": "elonmusk"
}
],
"squid": "YOUR_SQUID_HASH"
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Add Twitter users to scrape tweets from
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json={
"tasks": [
{"screen_name": "elonmusk"}
],
"squid": squid_id
}
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "dea6b229a9cf67cc5363dfe6062b63ba",
"created_at": "2025-07-07T09:36:01.623358",
"is_active": true,
"params": {
"username": "elonmusk"
},
"module": 127,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/twitter-user-tweets-scraper/credit-cost
Credit cost for the Twitter User Tweets Scraper
1 credit per tweet.
# Get Results
Source: https://docs.lobstr.io/examples/twitter-user-tweets-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Twitter User Tweets Scraper
Retrieve scraped data from your **Twitter User Tweets Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique internal identifier for the tweet. Example: `1996281178668876214`
Direct URL to the tweet on Twitter/X. Example: `https://twitter.com/OpenAI/status/1996281178668876214`
URL of the original tweet (populated if this is a retweet or quote tweet)
Unique identifier of the original tweet (for retweets and quote tweets)
Display name of the tweet author. Example: `OpenAI`
Unique internal Twitter/X identifier of the tweet author. Example: `4398626122`
Twitter/X handle of the author (without the @ symbol). Example: `OpenAI`
Date and time the tweet was published. Example: `2025-12-03T18:11:36+00:00`
Full text content of the tweet. Example: \`In our tests, we found that the confessions method significantly improves the visibility of model misbehavior.
Averaging across our evaluations designed to induce misbehavior, the probability of "false negatives" (i.e., the model not complying with instructions and then not confessing to it) is only 4.4%.\`
Twitter/X handle of the account this tweet is replying to. Example: `OpenAI`
Unique identifier of the tweet being replied to. Example: `1996281175770599447`
Twitter/X user ID of the account being replied to. Example: `4398626122`
Total number of times the tweet has been viewed. Example: `105130`
Number of times the tweet has been retweeted. Example: `31`
Number of likes the tweet received. Example: `408`
Number of times the tweet has been quoted. Example: `2`
Number of replies to the tweet. Example: `31`
Number of times the tweet has been bookmarked. Example: `48`
Thumbnail URL of the 1st media item in the tweet (0-indexed). Example: `https://pbs.twimg.com/media/G7Q1aWgb0AAuhN-.jpg`
Type of the 1st media item (e.g. photo, video, animated\_gif). Example: `photo`
URL of the 1st media item in the tweet. Example: `https://pbs.twimg.com/media/G7Q1aWgb0AAuhN-.jpg`
Thumbnail URL of the 2nd media item attached to the tweet. Example: `https://pbs.twimg.com/media/G7Q1aWZbMAAxa4c.jpg`
Type of the 2nd media item (e.g. photo, video). Example: `photo`
URL of the 2nd media item attached to the tweet. Example: `https://pbs.twimg.com/media/G7Q1aWZbMAAxa4c.jpg`
Thumbnail URL of the 3rd media item attached to the tweet
Type of the 3rd media item (e.g. photo, video)
URL of the 3rd media item attached to the tweet
Thumbnail URL of the 4th media item attached to the tweet
Type of the 4th media item (e.g. photo, video)
URL of the 4th media item attached to the tweet
URL of a linked media card (e.g. article preview) embedded in the tweet
Domain of the linked media card embedded in the tweet
Thumbnail image URL of the linked media card
Title of the linked media card embedded in the tweet
Description text of the linked media card
Whether this tweet is a retweet of another tweet. Example: `false`
Whether this tweet quotes another tweet. Example: `false`
Whether the tweet is pinned to the top of the author's profile. Example: `false`
Raw JSON tweet data returned by the Twitter/X API
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 19211,
"object": "result",
"squid": "d7f6258b2a43ab78cf0dca3a237c49f8",
"run": "082110ac9afc9d87f75894a0261a3e38",
"internal_unique_id": "1996281178668876214",
"tweet_url": "https://twitter.com/OpenAI/status/1996281178668876214",
"original_tweet_url": null,
"original_tweet_id": null,
"name": "OpenAI",
"user_id": "4398626122",
"username": "OpenAI",
"published_at": "2025-12-03T18:11:36+00:00",
"content": "In our tests, we found that the confessions method significantly improves the visibility of model misbehavior.\n\nAveraging across our evaluations designed to induce misbehavior, the probability of \"false negatives\" (i.e., the model not complying with instructions and then not confessing to it) is only 4.4%.",
"in_reply_to_screen_name": "OpenAI",
"in_reply_to_status_id_str": "1996281175770599447",
"in_reply_to_user_id_str": "4398626122",
"views_count": 105130,
"retweet_count": 31,
"likes": 408,
"quote_count": 2,
"reply_count": 31,
"bookmarks_count": 48,
"media_0_thumbnail": "https://pbs.twimg.com/media/G7Q1aWgb0AAuhN-.jpg",
"media_0_type": "photo",
"media_0_url": "https://pbs.twimg.com/media/G7Q1aWgb0AAuhN-.jpg",
"media_1_thumbnail": "https://pbs.twimg.com/media/G7Q1aWZbMAAxa4c.jpg",
"media_1_type": "photo",
"media_1_url": "https://pbs.twimg.com/media/G7Q1aWZbMAAxa4c.jpg",
"media_2_thumbnail": "",
"media_2_type": "",
"media_2_url": "",
"media_3_thumbnail": "",
"media_3_type": "",
"media_3_url": "",
"binded_media_url": "",
"binded_media_domain": "",
"binded_media_thumbnail_url": "",
"binded_media_title": "",
"binded_media_description": "",
"is_retweeted": false,
"is_quoted": false,
"is_pinned": false,
"_json": null,
"functions": null,
"native_id": 19211
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/twitter-user-tweets-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Twitter User Tweets Scraper settings
Configure your Twitter User Tweets Scraper squid settings. Control the number of tweets to fetch, time filtering, and whether to include retweets and pinned tweets.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **json** | boolean | false | If true, returns the complete raw JSON payload for each tweet |
| **max\_results** | integer | null | Maximum number of tweets to scrape per user |
| **fetch\_since** | string | null | Stop scraping when items older than this threshold are reached (based on `published_at`). Use a relative duration (24h, 7d, 2w) or an absolute date (YYYY-MM-DD HH:MM:SS) |
| **fetch\_since\_timezone** | string | null | Timezone for interpreting an absolute `fetch_since` date (e.g. `Europe/Paris`). Only applies when `fetch_since` is an absolute date — ignored for relative values like `24h` or `7d`. See [supported timezones](/docs/timezones). |
| **exclude\_reposts** | boolean | false | If true, excludes retweets from results |
| **collect\_pinned\_tweets** | boolean | false | If true, includes pinned tweets in results |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Use `fetch_since` to monitor recent activity - set to `24` to only collect tweets from the last day.
Enable `exclude_reposts` to focus on original content only.
Pinned tweets are not collected by default - enable `collect_pinned_tweets` if you need them.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Twitter User Tweets Scraper (2)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"json": true,
"fetch_since": null,
"max_results": 98,
"exclude_reposts": true,
"collect_pinned_tweets": true
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Update scraper settings
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Twitter User Tweets Scraper (2)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"json": True, # Return raw JSON from Twitter API
"fetch_since": None, # No time limit (fetch all)
"max_results": 98, # Maximum tweets per user
"exclude_reposts": True, # Don't include retweets
"collect_pinned_tweets": True # Include pinned tweets
}
}
)
print(response.json())
```
## Response
```json 201 theme={null}
{
"name": "Twitter User Tweets Scraper (2)",
"no_line_breaks": true,
"params": {
"json": true,
"fetch_since": null,
"max_results": 98,
"exclude_reposts": true,
"collect_pinned_tweets": true
},
"to_complete": false,
"export_unique_results": true
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/upwork-jobs-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Upwork Jobs Scraper squid
Add URLs or inputs to your **Upwork Jobs Scraper** squid.
Crawler ID: `681a0d2e2641326f7b87cda35513618a`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
Upwork job search URL, keyword, or single posting link. Example: `https://www.upwork.com/nx/search/jobs/?q=python+developer`
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "681a0d2e2641326f7b87cda35513618a",
"tasks": [
{"url": "https://www.upwork.com/nx/search/jobs/?q=python+developer"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "681a0d2e2641326f7b87cda35513618a",
"tasks": [
{"url": "https://www.upwork.com/nx/search/jobs/?q=python+developer"}
]
}
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.upwork.com/nx/search/jobs/?q=python+developer"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/upwork-jobs-scraper/credit-cost
Credit cost for the Upwork Jobs Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Jobs | 1 | 1 credit per job posting. |
| Job Details | 1 | 1 extra credit per job posting when the add-on is enabled. Off by default. |
# Get Results
Source: https://docs.lobstr.io/examples/upwork-jobs-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Upwork Jobs Scraper
Retrieve scraped data from your **Upwork Jobs Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Page number (default: 1)
## Result Fields
Unique Upwork job posting identifier. Example: `~01abc123def456`
Direct URL to the job posting. Example: `https://www.upwork.com/jobs/~01abc123def456`
Upwork's public job reference (the \~02... token)
Job title. Example: `Python Developer for Data Pipeline`
Full job description
Date and time published, in UTC. Example: `2026-09-14T10:30:00Z`
Date and time created, in UTC
Hourly or Fixed-Price. Example: `Fixed-Price`
Human-readable budget. Example: `$500`
Fixed-price budget as a number. Example: `500.0`
Lower bound of hourly rate range
Upper bound of hourly rate range
Expected project duration. Example: `1 to 3 months`
Expected project duration in weeks
Expected weekly workload on hourly jobs
Experience level the client asks for. Example: `Intermediate`
Skills attached to the posting, comma-separated. Example: `Python, Pandas, Apache Airflow`
### Detail Fields
The following fields require `job_details: true` in settings.
True when from an Upwork Enterprise client
Number of freelancers the client wants
Currency of the budget/hourly rate
Number of proposals received
Upwork category of the job
Top-level Upwork category group
Hiring status of the posting
Freelancers already hired
Freelancers invited to interview
Invitations the client sent
Last time the client acted on this posting
Country of the client
City of the client
Timezone of the client
Total amount the client has spent on Upwork
Average feedback score of the client, out of 5
Number of reviews the client has received
Number of jobs the client has posted
Number of contracts currently running
Number of jobs that ended in a hire
Total hours the client has paid for
Average hourly rate the client has paid
True when payment method is verified
Date the client joined Upwork
Number of open job postings
Countries restricted to, comma-separated
Minimum Job Success Score required
English level the client asks for
True when only Rising Talent accepted
True when portfolio is required
True when restricted to client's local market
URLs of similar jobs, comma-separated
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"job_id": "~01abc123def456", "title": "Python Developer for Data Pipeline", "job_type": "Fixed-Price", "budget_amount": 500.0, "experience_level": "Intermediate", "skills": "Python, Pandas, Apache Airflow", "posted_at": "2026-09-14T10:30:00Z"}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/upwork-jobs-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Upwork Jobs Scraper settings
Configure your **Upwork Jobs Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| rows | integer | — | Number of rows returned per API page |
| url | string | — | Upwork search URL, keyword, or single job posting link |
| category | string | Any | Only return jobs from this Upwork category |
| hourly\_or\_fixed | string | Any | Filter by hourly or fixed-price jobs |
| budget\_range | string | — | Budget filter as min-max in USD, e.g. `100-` or `-500` |
| experience\_level | string | Any | Entry Level, Intermediate, or Expert |
| client\_history | string | Any | Filter by client's hiring history |
| client\_location | string | — | Only return jobs from clients in this country |
| posted\_within | string | Any time | Only return jobs published within this window |
| sort | string | Relevance | Relevance or Newest |
| max\_results | integer | 1000 | Stop each task after this many jobs |
| fetch\_since | string | — | Only collect jobs published after this threshold (24h, 7d, or YYYY-MM-DD) |
| fetch\_since\_timezone | string | — | Timezone for fetch\_since |
| job\_details | boolean | false | Open each job posting to collect client data (country, city, total spent, rating) |
Setting `job_details: true` enables additional detail fields in results.
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/681a0d2e2641326f7b87cda35513618a \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"max_results": 500,
"sort": "Newest",
"experience_level": "Intermediate",
"job_details": true
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/681a0d2e2641326f7b87cda35513618a",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"max_results": 500,
"sort": "Newest",
"experience_level": "Intermediate",
"job_details": True
}
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"max_results": 500, "sort": "Newest", "experience_level": "Intermediate", "job_details": true, "hourly_or_fixed": "Any", "posted_within": "Any time"}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/vinted-products-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add Vinted catalog search URLs to scrape product listings
Add Vinted catalog search URLs to scrape product listings from the marketplace. The scraper extracts product details, pricing, and seller information.
Use Vinted's catalog URL with search filters applied. You can filter by category, brand, size, price range, and sort order directly in the URL.
Crawler ID: `ffd34f9b42a79b7323a048f09fc158e6`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the Vinted Products Scraper crawler |
| **tasks** | array | Yes | Array of task objects, each containing a `url` field |
## Task Object
| Field | Type | Required | Description |
| - | - | - | - |
| **url** | string | Yes | Vinted catalog URL (e.g., `https://www.vinted.fr/catalog?search_text=nike&order=newest_first`) |
Apply filters on Vinted first, then copy the URL. All filter parameters will be preserved in the URL.
Vinted operates country-specific sites (vinted.fr, vinted.de, vinted.es, etc.). Use the appropriate domain for your target market.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{
"url": "https://www.vinted.fr/catalog?search_text=nike&order=newest_first"
}
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Add Vinted catalog search URLs
payload = {
"squid": squid_id,
"tasks": [
{"url": "https://www.vinted.fr/catalog?search_text=nike&order=newest_first"}
]
}
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json=payload
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates skipped: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "82367f24d9450b2222080eed91662968",
"created_at": "2025-07-17T09:06:47.287893",
"is_active": true,
"params": {
"url": "https://www.vinted.fr/catalog?search_text=nike&order=newest_first"
},
"module": 115,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/vinted-products-scraper/credit-cost
Credit cost for the Vinted Products Scraper
1 credit per product.
# Get Results
Source: https://docs.lobstr.io/examples/vinted-products-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Vinted Products Scraper
Retrieve scraped data from your **Vinted Products Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique identifier for the listing on Vinted. Example: `8381892452`
Direct URL to the item listing on Vinted. Example: `https://www.vinted.com/items/8381892452-air-jordan-5-wolf-grey`
Title of the item listing on Vinted. Example: `Air Jordan 5 wolf grey`
Listed price of the item. Example: `291`
Whether the listing is currently visible to buyers on Vinted. Example: `1`
Discount applied to the item price
ISO 3-letter currency code of the listed price. Example: `USD`
Brand name of the listed item. Example: `Jordan`
Whether the seller is open to swapping the item instead of selling. Example: `false`
Whether the listing has paid promotion on Vinted. Example: `false`
URL of the main listing image on Vinted. Example: `https://images1.vinted.net/t/01_01a39_zLtBDgLdFFsi75ds1PDdGcQe/f800/1773400288.webp?s=08f8c6b85155c02fa5358a303ccd36bfb44fabf9`
Dominant colour detected in the main listing image. Example: `#545962`
Number of times the listing has been added to favourites by buyers. Example: `0`
Whether the item is marked as favourite by the scraping account. Example: `false`
Internal identifier for the favourite group
Trust or certification badge on the listing (e.g. Pro seller)
Internal conversion metric for the listing
Buyer protection or service fee charged by Vinted. Example: `15.25`
Total price including all fees and service charges. Example: `306.25`
Number of times the listing has been viewed. Example: `0`
Size label of the item (e.g. S, M, L, 38, UK10). Example: `10`
Internal content source identifier for the listing. Example: `catalog`
Unique Vinted identifier of the seller. Example: `223926023`
Login username of the seller on Vinted. Example: `saf0921`
Whether the seller is a registered business account on Vinted. Example: `false`
URL to the seller's Vinted profile. Example: `https://www.vinted.com/member/223926023-saf0921`
URL of the seller's Vinted profile photo. Example: `https://images1.vinted.net/t/06_00766_fgANGTQTXdbSuyxoBr4DrCQD/f800/1765632251.webp?s=41905c4cbb60f2d60151d0c4bf1039bd6a4e4863`
Whether the seller's account is flagged as suspicious by Vinted. Example: `false`
Seller's preferred item category orientation (e.g. men, women, kids)
Whether the seller's account is hidden on Vinted. Example: `false`
Full description text provided by the seller for the item. Example: `Air Jordan 5 wolf grey, brand: Jordan, condition: New with tags, size: 10, $291.00, $306.25 includes Buyer Protection`
Condition of the item as listed by the seller, not its sale/availability status. One of `New with tags`, `New without tags`, `Very good condition`, `Good condition`, `Satisfactory condition` (exact wording may appear in the seller's own locale, e.g. `Très bon état`). Example: `New with tags`
## Response
```json 200 theme={null}
{
"total_results": 84,
"limit": 50,
"page": 1,
"total_pages": 2,
"data": [
{
"internal_id": "8381892452",
"url": "https://www.vinted.com/items/8381892452-air-jordan-5-wolf-grey",
"title": "Air Jordan 5 wolf grey",
"price": 291,
"is_visible": 1,
"discount": "",
"currency": "USD",
"brand_title": "Jordan",
"is_for_swap": false,
"promoted": false,
"image_url": "https://images1.vinted.net/t/01_01a39_zLtBDgLdFFsi75ds1PDdGcQe/f800/1773400288.webp?s=08f8c6b85155c02fa5358a303ccd36bfb44fabf9",
"image_dominant_color": "#545962",
"favourite_count": 0,
"is_favourite": false,
"favourite_group_id": "",
"badge": "",
"conversion": null,
"service_fee": 15.25,
"total_item_price": 306.25,
"view_count": 0,
"size_title": "10",
"content_source": "catalog",
"user_id": "223926023",
"user_login": "saf0921",
"user_business": false,
"user_profile_url": "https://www.vinted.com/member/223926023-saf0921",
"user_photo_url": "https://images1.vinted.net/t/06_00766_fgANGTQTXdbSuyxoBr4DrCQD/f800/1765632251.webp?s=41905c4cbb60f2d60151d0c4bf1039bd6a4e4863",
"user_is_sus": false,
"user_orientation": "men",
"user_is_hidden": false,
"description": "Air Jordan 5 wolf grey, brand: Jordan, condition: New with tags, size: 10, $291.00, $306.25 includes Buyer Protection",
"status": "New with tags"
},
{
"internal_id": "6703908171",
"url": "https://www.vinted.com/items/6703908171-cropped-tank-top",
"title": "Cropped tank top",
"price": 6,
"is_visible": 1,
"discount": "",
"currency": "EUR",
"brand_title": "Pull & Bear",
"is_for_swap": false,
"promoted": false,
"image_url": "https://images1.vinted.net/t/01_020d0_BjtV6XdKS7u9y2GKBR7R82gh/f800/1752829032.jpeg?s=f93b1a95e2303af55d0a1fa8689ccc6d17ce596a",
"image_dominant_color": "#8C8271",
"favourite_count": 0,
"is_favourite": false,
"favourite_group_id": "",
"badge": "",
"conversion": null,
"service_fee": 1,
"total_item_price": 7,
"view_count": 0,
"size_title": "XS / 34 / 6",
"content_source": "catalog",
"user_id": "15167827",
"user_login": "ofrzrfrazier",
"user_business": false,
"user_profile_url": "https://www.vinted.com/member/15167827-ofrzrfrazier",
"user_photo_url": "https://images1.vinted.net/t/02_00d60_iK5xoZLZYfDPApkachVv7owN/f800/1605256954.jpeg?s=ef5fd21e845124b78dcdf5e2996192b695dfa82b",
"user_is_sus": false,
"user_orientation": "",
"user_is_hidden": false,
"description": "Cropped tank top, brand: Pull & Bear, condition: Very good condition, size: XS / 34 / 6, €6.00, €7.00 includes Buyer Protection",
"status": "Very good condition"
}
]
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/vinted-products-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure scraper settings for Vinted Products Scraper
Configure your squid settings for the Vinted Products Scraper. Control pagination depth and result limits.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_pages** | integer | 10 | Maximum number of catalog pages to scrape per task (max: 10) |
| **max\_results** | integer | unlimited | Maximum number of items to collect per task |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique results across all tasks in the run |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping workers (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Use `max_results` to cap items per search URL, and `max_unique_results_per_run` for a global limit across all tasks.
Vinted catalog pages typically contain 24-48 products per page.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Vinted Products Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_pages": 10,
"max_results": 200
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Vinted Products Scraper (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_pages": 10,
"max_results": 200
}
}
)
print(f"Settings updated: {response.json()['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Vinted Products Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_pages": 10,
"max_results": 200
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/yellow-pages-companies-search/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Yellow Pages Companies Search Export squid
Add URLs or inputs to your **Yellow Pages Companies Search Export** squid.
Crawler ID: `03fcec3e9345dbf9e42a0a2f2f04c017`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
Yellow Pages search URL. Example: `https://www.yellowpages.com/search?search_terms=plumber&geo_location_terms=Austin%2C+TX`
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"squid": "YOUR_SQUID_HASH", "tasks": [{"url": "https://www.yellowpages.com/search?search_terms=plumber&geo_location_terms=Austin%2C+TX"}]}'
```
```python Python theme={null}
import requests
headers = {"Authorization": "Token YOUR_API_KEY", "Content-Type": "application/json"}
response = requests.post("https://api.lobstr.io/v1/tasks", headers=headers,
json={"squid": "YOUR_SQUID_HASH", "tasks": [{"url": "https://www.yellowpages.com/search?search_terms=plumber&geo_location_terms=Austin%2C+TX"}]})
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.yellowpages.com/search?search_terms=plumber&geo_location_terms=Austin%2C+TX"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/yellow-pages-companies-search/credit-cost
Credit cost for the Yellow Pages Companies Search Export
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Businesses | 1 | 1 credit per business listing. |
| Collect Additional Details | 1 | 1 extra credit per business listing when the add-on is enabled. Off by default. |
# Get Results
Source: https://docs.lobstr.io/examples/yellow-pages-companies-search/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Yellow Pages Companies Search Export
Retrieve scraped data from your **Yellow Pages Companies Search Export** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Page number (default: 1)
## Result Fields
Unique Yellow Pages identifier (ypid). Example: `560515561`
Business name. Example: `ABC Plumbing Co.`
Direct URL to the listing.
Whether the business is sponsored.
Comma-separated Yellow Pages categories. Example: `Plumbers, Water Heater Repair`
Phone number. Example: `(512) 555-0123`
Full formatted address.
Street address.
City. Example: `Austin`
US state code. Example: `TX`
ZIP code. Example: `78701`
Average customer rating. Example: `4.7`
Total customer reviews. Example: `89`
Years operating.
Opening hours rule.
Business website. Example: `https://abcplumbing.com`
Short snippet from the search page.
Thumbnail image URL.
### Detail Fields
The following fields require `results_details: true` in settings.
Latitude.
Longitude.
Email address on the business page.
Full business description.
Year founded.
Comma-separated list of business photo URLs.
Facebook page URL.
Instagram profile URL.
Twitter / X profile URL.
LinkedIn page URL.
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"name": "ABC Plumbing Co.", "city": "Austin", "state": "TX", "phone": "(512) 555-0123", "rating": 4.7, "review_count": 89, "website": "https://abcplumbing.com"}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/yellow-pages-companies-search/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Yellow Pages Companies Search Export settings
Configure your **Yellow Pages Companies Search Export** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| **url** | string | — | Yellow Pages search URL (use this OR keyword + location) |
| **keyword** | string | — | What you are looking for on Yellow Pages |
| **location** | string | — | US city and state to search in, e.g. 'Austin, TX' |
| **max\_unique\_results\_per\_run** | integer | — | Max unique results across all tasks in a run |
| **max\_results** | integer | 3000 | Maximum results per task (Yellow Pages max \~3000) |
| **sort** | string | Default | How Yellow Pages orders results: Default, Distance, Best Match, Highest Rated, Most Reviewed |
| **min\_rating** | string | — | Only collect businesses with at least this rating |
| **min\_reviews** | integer | — | Only collect businesses with at least this many reviews |
| **category\_match** | boolean | false | Only collect businesses whose categories contain your search term |
| **results\_details** | boolean | false | Visit each business page to collect lat/lng, email, description, social links |
Setting `results_details: true` enables additional detail fields in results, including latitude, longitude, email, description, and social media links.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"params": {"keyword": "plumber", "location": "Austin, TX", "max_results": 100, "sort": "Highest Rated"}}'
```
```python Python theme={null}
import requests
requests.post("https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH",
headers={"Authorization": "Token YOUR_API_KEY", "Content-Type": "application/json"},
json={"params": {"keyword": "plumber", "location": "Austin, TX", "max_results": 100, "sort": "Highest Rated"}})
```
## Response
```json 201 theme={null}
{"params": {"keyword": "plumber", "location": "Austin, TX", "max_results": 100, "sort": "Highest Rated"}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/yelp-reviews-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add Yelp business URLs to scrape reviews
Add Yelp business page URLs to collect all reviews for each business. The scraper extracts the full review text, star rating, reviewer profile, photos, and community votes.
Crawler ID: `ea1c83f60e32a4e1de91a1ed1e41b268`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the Yelp Reviews Export crawler |
| **tasks** | array | Yes | Array of task objects, each containing a `url` field |
## Task Object
| Field | Type | Required | Description |
| - | - | - | - |
| **url** | string | Yes | Full Yelp business URL — must contain `/biz/` (e.g., `https://www.yelp.com/biz/olio-e-piu-new-york-7`). Also accepts country variants (yelp.fr, yelp.co.uk, etc.) |
Find the business on Yelp, then copy the URL from the address bar. Make sure it contains `/biz/` — not a search URL.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{
"url": "https://www.yelp.com/biz/olio-e-piu-new-york-7"
}
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
payload = {
"squid": squid_id,
"tasks": [
{"url": "https://www.yelp.com/biz/olio-e-piu-new-york-7"},
{"url": "https://www.yelp.com/biz/le-bernardin-new-york"}
]
}
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json=payload
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates skipped: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"created_at": "2026-05-12T10:00:00.000000",
"is_active": true,
"params": {
"url": "https://www.yelp.com/biz/olio-e-piu-new-york-7"
},
"module": 116,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/yelp-reviews-scraper/credit-cost
Credit cost for the Yelp Reviews Scraper
0.2 credit per review
# Get Results
Source: https://docs.lobstr.io/examples/yelp-reviews-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped reviews from Yelp Reviews Export
Retrieve scraped reviews from your **Yelp Reviews Export** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Yelp review ID — unique across the platform. Example: `E2HrRt6Pf_l2lzaB_eDc5Q`
Direct shareable URL to the review on Yelp. Example: `https://www.yelp.com/biz/olio-e-piu-new-york-7?hrid=E2HrRt6Pf_l2lzaB_eDc5Q`
Star rating given by the reviewer (1–5). Example: `5`
Full text of the review. Example: `Really great service, food, and ambiance!!`
Date and time the review was last posted or modified (UTC, ISO format). Example: `2026-04-04 10:40:18`
Language of the review (ISO 639-1 code). Example: `en`
Whether the review is highlighted as featured by Yelp. Example: `false`
Community vote count: "Helpful". Example: `12`
Community vote count: "Thanks". Example: `4`
Community vote count: "Love This". Example: `8`
Community vote count: "Oh No". Example: `1`
Text of the owner's reply to the review, if any
Date and time the owner reply was posted (UTC, ISO format). Example: `2026-04-10 09:15:00`
Unix timestamp of the owner reply. Example: `1744277700`
Number of photos attached to the review. Example: `2`
Comma-separated URLs of photos attached to the review
Number of videos attached to the review. Example: `0`
Display name of the reviewer. Example: `Diana H.`
Yelp user ID of the reviewer. Example: `KrnCBHS68nvCDyLOjC7TwQ`
Reviewer's home location as displayed on Yelp. Example: `Manhattan, New York, NY`
Total number of reviews the reviewer has posted on Yelp. Example: `1`
Number of friends the reviewer has on Yelp. Example: `12`
Number of check-ins the reviewer has logged on Yelp. Example: `0`
Total number of photos the reviewer has uploaded across Yelp. Example: `2`
Date the reviewer joined Yelp (ISO date). Example: `2019-09-05`
Whether the reviewer paid for a service through Yelp's payment integration. Example: `false`
Whether the reviewer currently holds Yelp Elite status. Example: `true`
List of years the reviewer held Yelp Elite status. Example: `[2024, 2025, 2026]`
URL of the business the review is for. Example: `https://www.yelp.com/biz/olio-e-piu-new-york-7`
Yelp business ID. Example: `16ZnHpuaaBt92XWeJHCC5A`
Business name. Example: `Olio e Più`
Average rating of the business at the time of scraping. Example: `4.5`
Total number of reviews on the business at the time of scraping. Example: `7375`
`false` for reviews Yelp lists under "not currently recommended" (only when `collect_not_recommended_reviews` is on), `true` for regular reviews. Example: `true`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 49687,
"object": "result",
"squid": "7e905dc61cfdd7df956da0871fcca9ce",
"run": "af1982e76d7b14e9be9b94e217488d1f",
"review_id": "E2HrRt6Pf_l2lzaB_eDc5Q",
"url": "https://www.yelp.com/biz/olio-e-piu-new-york-7?hrid=E2HrRt6Pf_l2lzaB_eDc5Q",
"rating": 5,
"text": "Really great service, food, and ambiance!! I especially recommend the calamari appetizer.",
"time_modified": "2026-04-04 10:40:18",
"language": "en",
"is_featured": false,
"helpful_count": 12,
"thanks_count": 4,
"love_this_count": 8,
"oh_no_count": 0,
"reply_text": null,
"reply_datetime": null,
"reply_timestamp": null,
"photo_count": 2,
"photos": "https://s3-media0.fl.yelpcdn.com/bphoto/aaa/o.jpg, https://s3-media0.fl.yelpcdn.com/bphoto/bbb/o.jpg",
"video_count": 0,
"user_name": "Diana H.",
"user_id": "KrnCBHS68nvCDyLOjC7TwQ",
"user_location": "Manhattan, New York, NY",
"user_review_count": 1,
"user_friend_count": 12,
"user_check_in_count": 0,
"user_photo_count": 2,
"user_member_since": "2019-09-05",
"has_user_paid_through_yelp": false,
"is_elite": false,
"user_elite_years": null,
"business_url": "https://www.yelp.com/biz/olio-e-piu-new-york-7",
"business_id": "16ZnHpuaaBt92XWeJHCC5A",
"business_name": "Olio e Più",
"business_avg_rating": 4.5,
"business_review_count": 7375,
"functions": null,
"native_id": 49687
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/yelp-reviews-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure the Yelp Reviews Export scraper settings
Configure your Yelp Reviews Export squid settings. Filter reviews by rating, sort order, language, or keyword, and use `fetch_since` to collect only recent reviews.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_results** | integer | unlimited | Maximum number of reviews to collect per business URL |
| **max\_unique\_results\_per\_run** | integer | unlimited | Maximum unique reviews across all tasks in the run |
| **sort** | string | `Yelp Sort` | Sort order: `Yelp Sort`, `Newest First`, `Oldest First`, `Highest Rated`, `Lowest Rated`, `Elites` |
| **rating** | string | `All Ratings` | Filter by star rating: `All Ratings`, `5 Stars`, `4 Stars`, `3 Stars`, `2 Stars`, `1 Star` |
| **language** | string | — | Filter reviews by language (ISO 639-1 code, e.g. `en`, `fr`, `de`). Leave empty to collect all languages. |
| **fetch\_since** | string | — | Stop scraping when reviews older than this threshold are reached. Use a relative duration (`24h`, `7d`, `2w`) or an absolute date (`YYYY-MM-DD HH:MM:SS`). Works best with `sort: "Newest First"`. |
| **term** | string | — | Keyword to search inside review text (e.g. `great service`). When set, `sort` and `rating` filters are ignored. |
| **collect\_not\_recommended\_reviews** | boolean | false | Also collect the reviews Yelp hides under "reviews that are not currently recommended". They are collected first and marked `is_recommended = false`. Yelp shows fewer details for them (no votes, photos, language or member-since), and `sort` does not apply to them. |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Use `rating: "1 Star"` combined with `sort: "Newest First"` to monitor recent negative reviews for reputation management.
When `term` is set, Yelp overrides the sort and rating parameters server-side — they will be ignored.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Yelp Reviews Export (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 500,
"sort": "Newest First",
"rating": "All Ratings"
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json={
"name": "Yelp Reviews Export (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_results": 500,
"sort": "Newest First",
"rating": "All Ratings"
}
}
)
data = response.json()
print(f"Settings updated: {data['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Yelp Reviews Export (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 500,
"sort": "Newest First",
"rating": "All Ratings"
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/yelp-search-export/add-tasks
POST https://api.lobstr.io/v1/tasks
Add Yelp search tasks to scrape business listings
Add Yelp search tasks to scrape business listings. You can provide either a Yelp search URL or use `keyword` + `location` to build the search programmatically.
Crawler ID: `ac92974d3c1c9f8d3997767f090fa0b8`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the Yelp Search Export crawler |
| **tasks** | array | Yes | Array of task objects |
## Task Object
You can either pass a `url` or use `keyword` + `location` (with optional `country`):
| Field | Type | Required | Description |
| - | - | - | - |
| **url** | string | No | Full Yelp search URL (e.g., `https://www.yelp.com/search?find_desc=Restaurants&find_loc=New+York`) |
| **keyword** | string | No | What you're looking for (business category or search term). Example: `Italian restaurant` |
| **location** | string | No | City or area to search in. Example: `New York, NY` |
| **country** | string | No | Country to scope the location list. Leave empty to use top worldwide cities |
Either `url` or `keyword` + `location` is required. When using `keyword` and `location`, filters set in the squid settings (price, sort, distance, etc.) are applied automatically.
To use advanced Yelp filters (cuisine type, outdoor seating, etc.), apply them on Yelp's website first and then copy the resulting URL.
## Code Examples
```bash cURL (URL) theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{
"url": "https://www.yelp.com/search?find_desc=Restaurants&find_loc=New+York%2C+NY"
}
]
}'
```
```bash cURL (keyword + location) theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{
"keyword": "Italian restaurant",
"location": "New York, NY",
"country": "US"
}
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Option 1: use a full Yelp URL
payload = {
"squid": squid_id,
"tasks": [
{"url": "https://www.yelp.com/search?find_desc=Restaurants&find_loc=New+York%2C+NY"}
]
}
# Option 2: use keyword + location (filters from squid settings apply)
payload = {
"squid": squid_id,
"tasks": [
{"keyword": "Italian restaurant", "location": "New York, NY", "country": "US"}
]
}
response = requests.post(f"{BASE_URL}/tasks", headers=headers, json=payload)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates skipped: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "82367f24d9450b2222080eed91662968",
"created_at": "2025-07-17T09:06:47.287893",
"is_active": true,
"params": {
"keyword": "Italian restaurant",
"location": "New York, NY",
"country": "US"
},
"module": 115,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/yelp-search-export/credit-cost
Credit cost for the Yelp Search Export
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Listings | 1 | 1 credit per business. |
| Collect Contacts | 1 | 1 credit per business if any email address is found. No email found = 0 credits. |
# Get Results
Source: https://docs.lobstr.io/examples/yelp-search-export/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Yelp Search Export
Retrieve scraped data from your **Yelp Search Export** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Direct URL to the business listing on Yelp. Example: `https://www.yelp.com/biz/vega-vitality-back-bay-boston-2?osq=Spa`
Business name as listed on Yelp. Example: `Vega Vitality Back Bay`
Total number of customer reviews on Yelp. Example: `97`
Average Yelp rating out of 5. Example: `4.8`
Whether the business is permanently closed on Yelp. Example: `false`
Whether the business has claimed its Yelp listing. Example: `true`
Price range indicator on Yelp (e.g. \$, $, $$$). Example: `$\`
Business categories on Yelp (e.g. Italian, Pizza). Example: `Medical Spas, Skin Care, Dermatologists`
Business website URL. Example: `http://vegavitality.com`
Primary phone number of the business. Example: `(617) 658-3421`
URL to the business's menu on its own website. Example: `https://vegavitality.com/pricing/`
URL to the business's menu page on Yelp
Full formatted address of the business. Example: `551 Boylston St, Fl 4, Boston, MA 02116`
Latitude coordinate of the business. Example: `42.350756`
Longitude coordinate of the business. Example: `-71.076037`
Amenities and features offered by the business as listed on Yelp. Example: `By appointment only, Wheelchair accessible, Accessible parking near entrance, ADA-compliant main entrance, No steps or stairs, Accepts credit cards, Garage parking, Street parking, Free Wi-Fi, Women-owned, Bike parking`
Email address of the business. Example: `info@vegavitality.com`
Whether the business is an advertiser on Yelp. Example: `false`
Whether the listing appears as a sponsored result on Yelp. Example: `false`
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 28248,
"object": "result",
"squid": "3b1be7b728c671f3e7ad20d9205127ce",
"run": "bd19be3f06ac76e1a6ec86e60989191b",
"url": "https://www.yelp.com/biz/vega-vitality-back-bay-boston-2?osq=Spa",
"name": "Vega Vitality Back Bay",
"reviews": 97,
"score": 4.8,
"is_closed": false,
"is_claimed": null,
"price": "$$",
"categories": "Medical Spas, Skin Care, Dermatologists",
"website": "http://vegavitality.com",
"phone": "(617) 658-3421",
"website_menu": null,
"yelp_menu": null,
"address": "551 Boylston St, Fl 4, Boston, MA 02116",
"lat": 42.350756,
"lng": -71.076037,
"amenities": "By appointment only, Wheelchair accessible, Accessible parking near entrance, ADA-compliant main entrance, No steps or stairs, Accepts credit cards, Garage parking, Street parking, Free Wi-Fi, Women-owned, Bike parking",
"email": "info@vegavitality.com",
"advertiser_status": false,
"is_sponsored": false,
"functions": null,
"native_id": 28248
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/yelp-search-export/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Yelp Search Export scraper settings
Configure your Yelp Search Export squid settings. Control result limits, contact harvesting, and search filters such as price range, distance, and business amenities.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_results** | integer | 240 | Maximum number of businesses to collect per task. Yelp displays up to 240 results per search |
| **max\_unique\_results\_per\_run** | integer | null | Maximum unique results across all tasks in the entire run |
| **collect\_contacts** | boolean | true | Visit each business's website to extract email addresses and social links (1 credit per business) |
| **sort** | string | Recommended | How results are ordered: `Recommended`, `Highest Rated`, or `Review Count` |
| **distance** | string | Any Distance | Maximum search radius: `Any Distance`, `Bird's-eye View`, `Driving (25 mi.)`, `Biking (6 mi.)`, `Walking (1 mi.)`, or `Within 4 blocks` |
| **price\_1** | boolean | false | Include businesses with price level \$ (inexpensive) |
| **price\_2** | boolean | false | Include businesses with price level \$\$ (moderate) |
| **price\_3** | boolean | false | Include businesses with price level \$\$\$ (pricey) |
| **price\_4** | boolean | false | Include businesses with price level \$\$\$\$ (very expensive) |
| **hot\_and\_new** | boolean | false | Only show businesses tagged as Hot and New by Yelp |
| **open\_now** | boolean | false | Only show businesses that are open at the time of the search |
| **good\_for\_kids** | boolean | false | Only show businesses marked as good for kids |
| **good\_for\_groups** | boolean | false | Only show businesses marked as good for groups |
| **free\_wifi** | boolean | false | Only show businesses that offer free Wi-Fi |
| **dogs\_allowed** | boolean | false | Only show businesses that allow dogs |
| **wheelchair\_accessible** | boolean | false | Only show businesses that are wheelchair accessible |
| **open\_to\_all** | boolean | false | Only show businesses tagged as open to all |
| **accepts\_credit\_cards** | boolean | false | Only show businesses that accept credit cards |
| **accepts\_cryptocurrency** | boolean | false | Only show businesses that accept cryptocurrency |
| **accepts\_apple\_pay** | boolean | false | Only show businesses that accept Apple Pay |
| **offers\_military\_discount** | boolean | false | Only show businesses that offer a military discount |
| **min\_star\_rating** | float | null | Only show businesses with at least this star rating (e.g. `3.5`, `4.0`) |
| **min\_reviews** | integer | null | Only show businesses with at least this many reviews |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Filter parameters (`price_1`, `open_now`, etc.) apply when tasks use `keyword` + `location` as input. When a full URL is provided, Yelp applies the filters embedded in that URL instead.
Enable `collect_contacts` to extract email addresses from business websites for outreach campaigns.
Enabling `collect_contacts` adds extra HTTP requests per business, increasing total run time and credit usage.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Yelp Search Export (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 240,
"collect_contacts": true,
"sort": "Highest Rated",
"distance": "Driving (25 mi.)",
"price_1": true,
"price_2": true,
"open_now": false,
"good_for_kids": false
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
payload = {
"name": "Yelp Search Export (1)",
"concurrency": 1,
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {
"max_results": 240,
"collect_contacts": True,
"sort": "Highest Rated",
"distance": "Driving (25 mi.)",
"price_1": True,
"price_2": True,
"open_now": False,
"good_for_kids": False
}
}
response = requests.post(f"{BASE_URL}/squids/{squid_id}", headers=headers, json=payload)
print(f"Settings updated: {response.json()['name']}")
```
## Response
```json 201 theme={null}
{
"name": "Yelp Search Export (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {
"max_results": 240,
"collect_contacts": true,
"sort": "Highest Rated",
"distance": "Driving (25 mi.)",
"price_1": true,
"price_2": true,
"open_now": false,
"good_for_kids": false
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/youtube-channel-email-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add YouTube channel URLs to scrape contact emails
Add YouTube channel URLs to scrape contact information including email addresses, social media links, and channel statistics. The scraper extracts data from the channel's About page.
Crawler ID: `8dce74bb8c2330fdafee70baa22b4709`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Request Body
| Field | Type | Required | Description |
| - | - | - | - |
| **squid** | string | Yes | Hash of your squid configured with the YouTube Channel Email Scraper |
| **tasks** | array | Yes | Array of task objects, each containing a `url` field |
## Task Object
| Field | Type | Required | Description |
| - | - | - | - |
| **url** | string | Yes | YouTube channel URL (e.g., `https://www.youtube.com/c/ChannelName` or `https://www.youtube.com/@handle`) |
## Supported URL Formats
The scraper accepts various YouTube channel URL formats:
| Format | Example |
| - | - |
| Custom URL | `https://www.youtube.com/c/ChannelName` |
| Handle URL | `https://www.youtube.com/@channelhandle` |
| Channel ID | `https://www.youtube.com/channel/UCxxxxxxxxxxxxxxxx` |
| User URL | `https://www.youtube.com/user/username` |
You can use any YouTube channel URL format - the scraper will resolve it to the correct channel.
Email addresses are only available if the channel owner has made them public in the About section.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{
"url": "https://www.youtube.com/c/TechLegend"
}
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Add YouTube channel URLs to scrape
payload = {
"squid": squid_id,
"tasks": [
{"url": "https://www.youtube.com/c/TechLegend"},
{"url": "https://www.youtube.com/@mkbhd"},
{"url": "https://www.youtube.com/channel/UCBcRF18a7Qf58cCRy5xuWwQ"}
]
}
response = requests.post(f"{BASE_URL}/tasks",
headers=headers,
json=payload
)
data = response.json()
print(f"Added {len(data['tasks'])} tasks")
print(f"Duplicates skipped: {data['duplicated_count']}")
```
## Response
```json 200 theme={null}
{
"duplicated_count": 0,
"tasks": [
{
"id": "82367f24d9450b2222080eed91662968",
"created_at": "2025-07-17T09:06:47.287893",
"is_active": true,
"params": {
"url": "https://www.youtube.com/c/TechLegend"
},
"module": 115,
"object": "task"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/youtube-channel-email-scraper/credit-cost
Credit cost for the YouTube Channel Scraper
1 credit per channel.
# Get Results
Source: https://docs.lobstr.io/examples/youtube-channel-email-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from YouTube Channel Scraper
Retrieve scraped data from your **YouTube Channel Email Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1). Example: `1`
## Result Fields
Each result object contains the following fields:
Unique YouTube channel identifier. Example: `UCmYFWvTSYR7nTUsxGYMowMg`
Email address found on the YouTube channel or linked website. Example: `dianalarusse@yandex.ru`
Total number of videos published on the channel. Example: `1,611 videos`
YouTube channel display name. Example: `Le russe facile avec Diana`
Total number of views across all channel videos. Example: `33761771`
Total number of channel subscribers as text (handy for display, but not sortable). Example: `183K`
Total number of channel subscribers as an exact integer, so results can be sorted and filtered. `0` for an empty channel. Example: `183000`
Date the YouTube channel was created. Example: `2017-02-16`
URL of the channel's banner image. Empty when the channel has no banner.
Whether the channel has YouTube's verified (or Official Artist Channel) badge. Example: `true`
Where the email was found: `channel` when it came from the channel's About tab, `video_descriptions` when it was extracted from a video description (including obfuscated forms like `name [at] domain.com`). Empty when no email was found. Example: `channel`
Country associated with the YouTube channel. Example: `France`
Instagram profile URL found on the YouTube channel. Example: `https://www.instagram.com/russe_facile_avec_diana/`
Twitter/X profile URL found on the YouTube channel
Facebook page URL found on the YouTube channel. Example: `https://www.facebook.com/LeRusseFacileAvecDiana/`
About text from the YouTube channel's About tab. Example: \`Vidéos sur la Russie et cours de russe même pour les « nuls en langues » 😉
Je m'appelle Diana et je suis une Russe native et professeur certifié de russe, de français et d'allemand. J'ai aidé des milliers de personnes à apprendre ma langue natale. Et je peux vous aider à le faire 👍
Je base mes cours sur les principes de la psychologie positive pour que vous associez l'apprentissage du russe à quelque chose d'agréable et cela vous donne envie de continuer sans vous ennuyer.
J'espère que nous allons passer de bons moments ensemble !
Pour progresser plus rapidement en russe: [https://russe-facile-avec-diana.teachable.com](https://russe-facile-avec-diana.teachable.com)
Pour me contacter:
[https://www.facebook.com/LeRusseAvecDiana/](https://www.facebook.com/LeRusseAvecDiana/)
[dianalarusse@yandex.ru](mailto:dianalarusse@yandex.ru)\`
URL slug or handle of the YouTube channel (e.g. @channelname). Example: `LerussefacileavecDiana`
Direct URL to the YouTube channel. Example: `https://www.youtube.com/@LerussefacileavecDiana`
URL of the channel's avatar or profile picture. Example: `https://yt3.googleusercontent.com/ytc/AIdro_lHG5KkuRZ80KItJH-v9LuueXEsf4Oz2jboUw9591vG73A=s900-c-k-c0x00ffffff-no-rj`
Other external links listed in the YouTube channel's About section. Example: `https://russe-facile-avec-diana.teachable.com/, https://www.paypal.me/dianarussie, https://www.tiktok.com/@russe_facile_avec_diana`
Up to 30 of the channel's most recent uploaded videos (title, URL, view count, published date, duration, thumbnail). Only populated when `get_videos` is enabled.
Up to 30 of the channel's most recent Shorts (title, URL, view count, thumbnail). Only populated when `get_shorts` is enabled.
Up to 30 of the channel's live and past streams (title, URL, view count, duration, thumbnail). Only populated when `get_streams` is enabled; empty if the channel has no Live tab.
Up to 30 of the channel's public playlists (title, URL, video count, thumbnail). Only populated when `get_playlists` is enabled.
Comments (up to 50 top-level + one reply page per thread) for up to 5 videos/Shorts. Only populated when `get_comments` is enabled alongside `get_videos` or `get_shorts`.
## Response
```json 200 theme={null}
{
"total_results": 1,
"limit": 50,
"page": 1,
"total_pages": 1,
"result_from": 1,
"result_to": 1,
"data": [
{
"id": 66816,
"object": "result",
"squid": "cb3ba78d76b4ef7455cf868304a44c87",
"run": "5683316cb99bde3abed3687f42257b85",
"channel_id": "UCmYFWvTSYR7nTUsxGYMowMg",
"email": "dianalarusse@yandex.ru",
"videos_count": "1,611 videos",
"account_name": "Le russe facile avec Diana",
"views_count": 33761771,
"subscribers_count": "183K",
"creation_date": "2017-02-16",
"country": "France",
"instagram": "https://www.instagram.com/russe_facile_avec_diana/",
"twitter": null,
"facebook": "https://www.facebook.com/LeRusseFacileAvecDiana/",
"about": "Vidéos sur la Russie et cours de russe même pour les « nuls en langues » 😉\n\nJe m'appelle Diana et je suis une Russe native et professeur certifié de russe, de français et d'allemand. J'ai aidé des milliers de personnes à apprendre ma langue natale. Et je peux vous aider à le faire 👍\n\nJe base mes cours sur les principes de la psychologie positive pour que vous associez l'apprentissage du russe à quelque chose d'agréable et cela vous donne envie de continuer sans vous ennuyer.\n\nJ'espère que nous allons passer de bons moments ensemble !\n\nPour progresser plus rapidement en russe: https://russe-facile-avec-diana.teachable.com\n\nPour me contacter: \nhttps://www.facebook.com/LeRusseAvecDiana/",
"slug": "LerussefacileavecDiana",
"url": "https://www.youtube.com/@LerussefacileavecDiana",
"avatar_url": "https://yt3.googleusercontent.com/ytc/AIdro_lHG5KkuRZ80KItJH-v9LuueXEsf4Oz2jboUw9591vG73A=s900-c-k-c0x00ffffff-no-rj",
"other_links": "https://russe-facile-avec-diana.teachable.com/, https://www.paypal.me/dianarussie, https://www.tiktok.com/@russe_facile_avec_diana",
"videos": [
{
"id": "Af6i6ChAVTw",
"type": "LOCKUP_CONTENT_TYPE_VIDEO",
"title": "Last To Leave Mansion, Keeps It",
"url": "https://www.youtube.com/watch?v=Af6i6ChAVTw",
"thumbnail_url": "https://i.ytimg.com/vi/Af6i6ChAVTw/hqdefault.jpg",
"duration_text": "57:51",
"metadata_text": [
"62M views",
"3 days ago"
]
}
],
"shorts": [
{
"id": "LiH-P4rSkLI",
"type": "LOCKUP_CONTENT_TYPE_SHORT",
"title": "Can You Pass This Classroom Quiz?",
"url": "https://www.youtube.com/shorts/LiH-P4rSkLI",
"thumbnail_url": "https://i.ytimg.com/vi/LiH-P4rSkLI/sardefault.jpg",
"duration_text": null,
"metadata_text": [
"16M views"
]
}
],
"streams": [
{
"id": "xpH9wtJuOHk",
"type": "LOCKUP_CONTENT_TYPE_VIDEO",
"title": "LIVE: ABC News Live - Tuesday, August 11 | ABC News",
"url": "https://www.youtube.com/watch?v=xpH9wtJuOHk",
"thumbnail_url": "https://i.ytimg.com/vi/xpH9wtJuOHk/hqdefault.jpg",
"duration_text": "11:54:56",
"metadata_text": [
"46K views",
"Streamed 12 hours ago"
]
}
],
"playlists": [
{
"id": "PLoSWVnSA9vG8hI-SUpAimvYJrPh-PRRvp",
"type": "LOCKUP_CONTENT_TYPE_PLAYLIST",
"title": "If You Survive, You Win",
"url": "https://www.youtube.com/playlist?list=PLoSWVnSA9vG8hI-SUpAimvYJrPh-PRRvp",
"thumbnail_url": "https://i.ytimg.com/vi/tnTPaLOaHz8/hqdefault.jpg",
"duration_text": "6 episodes",
"metadata_text": [
"Updated 3 days ago"
]
}
],
"comments": [
{
"comment_id": "UgzABC123",
"text": "This is amazing!",
"author": "SomeUser",
"author_channel_id": "UCabc123",
"author_profile_url": "https://www.youtube.com/channel/UCabc123",
"author_avatar": "https://yt3.ggpht.com/abc123",
"author_is_channel_owner": false,
"author_is_verified": false,
"author_badge": null,
"published_time_text": "2 days ago",
"published_at": null,
"vote_count": 214,
"reply_count": 3,
"has_creator_heart": false,
"is_pinned": false,
"type": "comment",
"reply_to_comment_id": null,
"video_id": "Af6i6ChAVTw",
"video_url": "https://www.youtube.com/watch?v=Af6i6ChAVTw",
"video_title": "Last To Leave Mansion, Keeps It",
"comments_count": 15234,
"channel_name": "MrBeast",
"channel_id": "UCX6OQ3DkcsbYNE6H8uQQuVA"
}
],
"functions": null,
"native_id": 66816
}
],
"next": null,
"previous": null
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/youtube-channel-email-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure YouTube Channel Scraper settings
Configure your YouTube Channel Email Scraper squid settings. Use the scraper parameters to control which content types are collected per channel.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **get\_videos** | boolean | false | Collect up to 30 of the channel's most recent uploaded videos (title, URL, view count, published date, duration, thumbnail) |
| **get\_shorts** | boolean | false | Collect up to 30 of the channel's most recent Shorts (title, URL, view count, thumbnail) |
| **get\_streams** | boolean | false | Collect up to 30 of the channel's live and past streams (title, URL, view count, duration, thumbnail) |
| **get\_playlists** | boolean | false | Collect up to 30 of the channel's public playlists (title, URL, video count, thumbnail) |
| **get\_comments** | boolean | false | Collect comments for up to 5 of the videos/Shorts gathered by `get_videos`/`get_shorts` (up to 50 top-level comments + one reply page per thread). Requires `get_videos` or `get_shorts` to be enabled. |
## Squid Settings
Configure general squid settings:
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid configuration |
| **concurrency** | integer | Number of parallel scraping threads (default: 1) |
| **export\_unique\_results** | boolean | Export only unique results (deduplicated) |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from results |
Keep concurrency low (1-2) to avoid rate limiting from YouTube.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "YouTube Channel Email Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
# Update squid settings
payload = {
"name": "YouTube Channel Email Scraper (1)",
"concurrency": 1, # Keep low to avoid rate limiting
"export_unique_results": True,
"to_complete": False,
"no_line_breaks": True,
"params": {} # No scraper-specific parameters
}
response = requests.post(f"{BASE_URL}/squids/{squid_id}",
headers=headers,
json=payload
)
print(f"Settings updated: {response.json()['name']}")
```
## Response
```json 201 theme={null}
{
"name": "YouTube Channel Email Scraper (1)",
"concurrency": 1,
"export_unique_results": true,
"to_complete": false,
"no_line_breaks": true,
"params": {}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/youtube-comments-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add YouTube video URLs to scrape comments from
Crawler ID: `66e9fbe07ae0a543576dc6ff241c229c`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash of the squid to add tasks to
Array of task objects to add
YouTube video URL. Example: `https://www.youtube.com/watch?v=dQw4w9WgXcQ`
## URL Format
The `url` field accepts standard YouTube video URLs:
```
https://www.youtube.com/watch?v=VIDEO_ID
https://youtu.be/VIDEO_ID
```
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"},
{"url": "https://www.youtube.com/watch?v=ANOTHER_VIDEO_ID"}
]
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}", "Content-Type": "application/json"}
squid_id = "YOUR_SQUID_HASH"
video_urls = [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"https://www.youtube.com/watch?v=ANOTHER_VIDEO_ID",
]
payload = {
"squid": squid_id,
"tasks": [{"url": url} for url in video_urls],
}
response = requests.post(f"{BASE_URL}/tasks", headers=headers, json=payload)
print(f"Tasks added: {len(response.json().get('tasks', []))}")
```
## Response
```json 201 theme={null}
{
"tasks": [
{
"id": "TASK_HASH",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"status": "pending"
}
]
}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/youtube-comments-scraper/credit-cost
Credit cost for the YouTube Comments Scraper
0.5 credit per comment.
Add YouTube video URLs to your **YouTube Comments Scraper** squid. Each task is one video; the scraper collects all top-level comments (and their replies if enabled) for that video.
# Get Results
Source: https://docs.lobstr.io/examples/youtube-comments-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped comments from YouTube Comments Scraper
Retrieve comments collected by your **YouTube Comments Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Hash of a specific run (optional)
Page number (default: 1)
## Result Fields
Unique YouTube comment ID. Example: `UgxZf7BbcN3mJlQkfvt4AaABAg`
Full text content of the comment. Example: `This video is amazing, learned so much!`
Display name of the comment author. Example: `John Doe`
YouTube channel ID of the author. Example: `UCxxxxxxxxxxxxxxxxxxxxxx`
URL to the author's YouTube channel. Example: `https://www.youtube.com/channel/UCxxxxxxxxxxxxxxxxxxxxxx`
URL to the author's profile picture. Example: `https://yt3.ggpht.com/...`
Whether the commenter is the video's channel owner. Example: `false`
Whether the author's channel is verified. Example: `false`
Membership or sponsorship badge label, if any. Example: `null`
Human-readable relative publish time as shown on YouTube. Example: `2 years ago`
ISO 8601 timestamp of when the comment was published, if available. Example: `2022-08-15T14:30:00Z`
Number of likes on the comment. Example: `342`
Number of replies to this top-level comment. Always `0` for replies. Example: `12`
Whether the video creator hearted this comment. Example: `false`
Whether this comment is pinned at the top. Example: `false`
Comment type: `comment` for top-level or `reply` for a reply. Example: `comment`
The `comment_id` of the parent comment this is a reply to. `null` for top-level comments. Example: `null`
YouTube video ID the comment belongs to. Example: `dQw4w9WgXcQ`
Full URL of the video. Example: `https://www.youtube.com/watch?v=dQw4w9WgXcQ`
Title of the video. Example: `Rick Astley - Never Gonna Give You Up (Official Music Video)`
Total number of comments on the video. Example: `2400000`
Name of the channel that uploaded the video. Example: `Rick Astley`
YouTube channel ID of the video uploader. Example: `UCuAXFkgsw1L7xaCfnd5JJOw`
## Code Examples
```bash cURL theme={null}
curl "https://api.lobstr.io/v1/results?squid=YOUR_SQUID_HASH&page=1" \
-H "Authorization: Token YOUR_API_KEY"
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}"}
squid_id = "YOUR_SQUID_HASH"
page = 1
all_results = []
while True:
response = requests.get(
f"{BASE_URL}/results",
headers=headers,
params={"squid": squid_id, "page": page},
)
data = response.json()
all_results.extend(data.get("results", []))
if not data.get("next"):
break
page += 1
print(f"Total comments collected: {len(all_results)}")
```
## Response
```json 200 theme={null}
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"comment_id": "UgxZf7BbcN3mJlQkfvt4AaABAg",
"text": "This song never gets old.",
"author": "Jane Smith",
"author_channel_id": "UCxxxxxxxxxxxxxxxxxxxxxx",
"author_profile_url": "https://www.youtube.com/channel/UCxxxxxxxxxxxxxxxxxxxxxx",
"author_avatar": "https://yt3.ggpht.com/example",
"author_is_channel_owner": false,
"author_is_verified": false,
"author_badge": null,
"published_time_text": "3 years ago",
"published_at": "2021-06-10T09:15:00Z",
"vote_count": 1204,
"reply_count": 45,
"has_creator_heart": false,
"is_pinned": false,
"type": "comment",
"reply_to_comment_id": null,
"video_id": "dQw4w9WgXcQ",
"video_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"video_title": "Rick Astley - Never Gonna Give You Up (Official Music Video)",
"comments_count": 2400000,
"channel_name": "Rick Astley",
"channel_id": "UCuAXFkgsw1L7xaCfnd5JJOw"
},
{
"comment_id": "UgxZf7BbcN3mJlQkfvt4AaABAg.9k2mLpQvX3z",
"text": "Agreed, timeless classic.",
"author": "John Doe",
"author_channel_id": "UCyyyyyyyyyyyyyyyyyyyyyy",
"author_profile_url": "https://www.youtube.com/channel/UCyyyyyyyyyyyyyyyyyyyyyy",
"author_avatar": "https://yt3.ggpht.com/example2",
"author_is_channel_owner": false,
"author_is_verified": false,
"author_badge": null,
"published_time_text": "3 years ago",
"published_at": "2021-06-11T10:02:00Z",
"vote_count": 8,
"reply_count": 0,
"has_creator_heart": false,
"is_pinned": false,
"type": "reply",
"reply_to_comment_id": "UgxZf7BbcN3mJlQkfvt4AaABAg",
"video_id": "dQw4w9WgXcQ",
"video_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"video_title": "Rick Astley - Never Gonna Give You Up (Official Music Video)",
"comments_count": 2400000,
"channel_name": "Rick Astley",
"channel_id": "UCuAXFkgsw1L7xaCfnd5JJOw"
}
]
}
```
# Update Settings
Source: https://docs.lobstr.io/examples/youtube-comments-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure YouTube Comments Scraper settings
Configure your **YouTube Comments Scraper** squid. Control sorting, reply collection, date filtering, and result limits.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Request body format. Value: `application/json`
## Scraper Parameters
Set these parameters in the `params` object:
| Parameter | Type | Default | Description |
| - | - | - | - |
| **max\_results** | integer | unlimited | Maximum comments to collect per video |
| **max\_unique\_results\_per\_run** | integer | null | Maximum unique comments across all tasks in the run |
| **sort\_by** | string | `top` | Comment sort order: `top` (most liked first) or `newest` (most recent first) |
| **skip\_pinned\_comment** | boolean | false | Skip the pinned comment at the top of the thread |
| **include\_replies** | boolean | true | Collect replies to top-level comments |
| **max\_replies** | integer | unlimited | Maximum replies to collect per comment. Only applies when `include_replies` is `true` |
| **fetch\_since** | string | null | Only collect comments published after this date. Accepts `YYYY-MM-DD HH:MM:SS` or a relative value (`24h`, `7d`, `30d`) |
| **fetch\_since\_timezone** | string | UTC | Timezone for `fetch_since`. Example: `Europe/Paris` |
## Squid Settings
| Setting | Type | Description |
| - | - | - |
| **name** | string | Display name for your squid |
| **concurrency** | integer | Number of parallel tasks (default: 1) |
| **export\_unique\_results** | boolean | Export only unique comments |
| **to\_complete** | boolean | Run until all tasks complete |
| **no\_line\_breaks** | boolean | Remove line breaks from text fields |
`max_replies` is only relevant when `include_replies` is `true`. Set it to cap reply collection on highly-commented threads.
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "YouTube Comments (1)",
"concurrency": 1,
"params": {
"sort_by": "top",
"include_replies": true,
"max_replies": 50,
"skip_pinned_comment": false,
"fetch_since": "7d"
}
}'
```
```python Python theme={null}
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.lobstr.io/v1"
headers = {"Authorization": f"Token {API_KEY}", "Content-Type": "application/json"}
squid_id = "YOUR_SQUID_HASH"
payload = {
"name": "YouTube Comments (1)",
"concurrency": 1,
"params": {
"sort_by": "top",
"include_replies": True,
"max_replies": 50,
"skip_pinned_comment": False,
"fetch_since": "7d",
},
}
response = requests.post(f"{BASE_URL}/squids/{squid_id}", headers=headers, json=payload)
print(f"Settings updated: {response.json()['name']}")
```
## Response
```json 201 theme={null}
{
"name": "YouTube Comments (1)",
"concurrency": 1,
"params": {
"sort_by": "top",
"include_replies": true,
"max_replies": 50,
"skip_pinned_comment": false,
"fetch_since": "7d"
}
}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/youtube-search-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your YouTube Search Scraper squid
Add URLs or inputs to your **YouTube Search Scraper** squid.
Crawler ID: `2bfd28f2e9d6012d6d557072fda474da`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
A YouTube video URL, a YouTube channel URL (@handle, /c/Name, /channel/UC..., /user/Name, or a bare custom URL -- optionally with a /videos, /shorts, /streams, or /playlists suffix to list that tab instead of the channel's profile), a hashtag URL, a playlist URL, a YouTube search-results URL, or just plain search-query text. Anything not recognized as a supported YouTube URL is searched verbatim, exactly like typing it into YouTube's search bar (this deliberately includes non-YouTube URLs, e.g. "google.com" is searched as text, not rejected). Example: `https://www.youtube.com/watch?v=dQw4w9WgXcQ`
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url/keyword": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "YOUR_SQUID_HASH",
"tasks": [
{"url/keyword": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"}
],
},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url/keyword": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/youtube-search-scraper/credit-cost
Credit cost for the YouTube Search Scraper
1 credit per result row. The `get_comments`, `get_subtitles` and `enrich_results` options add no extra credits.
# Get Results
Source: https://docs.lobstr.io/examples/youtube-search-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from YouTube Search Scraper
Retrieve scraped data from your **YouTube Search Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`.
## Query Parameters
Hash of the squid to get results from.
Page number (default: 1).
## Result Fields
### Export Results
What this row represents: 'video', 'channel', 'short', 'stream', or 'playlist'. Example: `video`
YouTube's own identifier for this video, channel, or playlist -- unique on its own since video/channel/playlist id formats never collide. Example: `dQw4w9WgXcQ`
Video title, or channel display name for a channel row. Example: `Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)`
Direct URL to the video or channel. Example: `https://www.youtube.com/watch?v=dQw4w9WgXcQ`
Video thumbnail, or channel avatar for a channel row. Example: `https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg`
Full video description, or full channel About text for a channel row. Example: `The official video for “Never Gonna Give You Up” by Rick Astley.`
Hashtags found on the video. Empty for a channel row or a search-listing video row (only populated when the video itself was fetched directly). Example: `["#RickAstley", "#NeverGonnaGiveYouUp"]`
Exact publish date. Only populated when the video itself was fetched directly -- a search-listing row only has published\_time\_text (see below). Example: `2009-10-24T23:57:33-07:00`
Approximate, relative publish time as shown on a search-listing row. Only populated for search-listing video rows. Example: `14 years ago`
Exact video duration in seconds. Only populated when the video itself was fetched directly. Example: `213`
Video duration as shown on a search-listing row (e.g. "3:32"). Only populated for search-listing video rows. Example: `3:32`
Exact view count when the video was fetched directly; parsed from listing text otherwise. bigint -- some videos already exceed the \~2.147B int32 range. Example: `1805080053`
View count as shown on a search-listing row. Only populated for search-listing video rows. Example: `48,467,121 views`
Exact like count. Only populated when the video itself was fetched directly -- not available on a search-listing row at all. bigint -- some videos already exceed the \~2.147B int32 range. Example: `19337903`
Approximate comment count text. YouTube exposes no exact comment count anywhere. Only populated when the video itself was fetched directly. Example: `2.4M`
Channel identifier -- the video's channel, or the channel itself for a channel row. Example: `UCuAXFkgsw1L7xaCfnd5JJOw`
Channel display name. Example: `Rick Astley`
Direct URL to the channel. Example: `https://www.youtube.com/@RickAstleyYT`
Channel avatar. On a video row this is the small avatar shown next to the video; on a channel row it's the same as thumbnail\_url. Example: `https://yt3.ggpht.com/example=s88-c-k-c0x00ffffff-no-rj`
Whether the channel has YouTube's verified (or Official Artist Channel) badge. Example: `True`
Approximate subscriber count text -- YouTube exposes no exact subscriber count anywhere. Example: `4.53M subscribers`
Channel banner image. Only populated for a channel row. Example: `https://yt3.googleusercontent.com/example=w2560-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj`
Channel handle. Only populated for a channel row. Example: `@MrBeast`
Approximate total video count text. Only populated for a channel row. Example: `997 videos`
Channel's claimed country, from its About tab. Only populated for a channel row. Example: `United States`
Date the channel joined YouTube, from its About tab. Only populated for a channel row. Example: `2012-02-20`
External/social links listed on the channel's About tab. Only populated for a channel row. Example: `["https://www.instagram.com/mrbeast/", "https://x.com/MrBeast"]`
Whether the video is currently a live broadcast. Example: `False`
Whether the video is an upcoming/scheduled premiere. Only populated when the video itself was fetched directly. Example: `False`
Live broadcast start time, if is\_live is true. Only populated when the video itself was fetched directly.
Whether the video has any captions/subtitles (auto-generated or user-added). Only populated when the video itself was fetched directly. Example: `True`
Language codes of the video's available caption tracks. Only populated when the video itself was fetched directly. Example: `["en", "de-DE"]`
Video category. Only populated when the video itself was fetched directly. Example: `Music`
Whether the video or channel is flagged family-safe by YouTube. Example: `True`
Whether the video is unlisted. Only populated when the video itself was fetched directly. Example: `False`
The task's original input string (URL or search text) that produced this row. Example: `rick astley`
1-based position of this row within its task's results (always 1 for a video/channel URL task). Example: `1`
### Get Comments
First page of top-level comments (up to 10). Only populated when Get Comments is enabled. Example: `[{"comment_id": "UgzABC123", "author": "@SomeUser", "author_channel_id": "UCabc123", "text": "This is amazing!", "published_time_text": "2 days ago", "vote_count": 214}]`
### Get Subtitles
Language code of the caption track subtitles\_text was fetched from. Only populated when Get Subtitles is enabled. Example: `en`
Transcript text of one caption track (see subtitles\_language). Only populated when Get Subtitles is enabled, and empty if the video has no captions. Example: `[Music playing] Welcome back to the channel...`
## Code Examples
```bash cURL theme={null}
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=YOUR_SQUID_HASH" \
-d "page=1"
```
```python Python theme={null}
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "YOUR_SQUID_HASH", "page": 1},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"result_type": "video", "content_id": "dQw4w9WgXcQ", "title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)", "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "thumbnail_url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg", "description": "The official video for \u201cNever Gonna Give You Up\u201d by Rick Astley.", "hashtags": ["#RickAstley", "#NeverGonnaGiveYouUp"], "published_at": "2009-10-24T23:57:33-07:00", "published_time_text": "14 years ago", "duration_seconds": 213}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/youtube-search-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure YouTube Search Scraper settings
Configure your **YouTube Search Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| max\_unique\_results\_per\_run | int | — | Maximum number of unique results retrieved across all tasks in the entire run. Leave empty for unlimited. Only meaningful for a search/listing task -- a video or channel URL always returns exactly one row. |
| max\_results | integer | — | Maximum number of videos to collect for a single search task, paginating as needed. Leave empty to collect as many as YouTube returns. Only meaningful for a search/listing task -- a video or channel URL always returns exactly one row. |
| type | string | — | Only for a search/plain-text task (ignored for a pasted search-results URL that already has its own filter, and for hashtag/playlist/channel-tab tasks). Restrict results to one content type. One of: `video`, `short`, `channel`, `playlist`, `movie`. |
| upload\_date | string | — | Only for a search/plain-text task. Restrict results to videos uploaded within this window. One of: `today`, `this_week`, `this_month`, `this_year`. |
| duration | string | — | Only for a search/plain-text task. Restrict results by video length. One of: `under_4_minutes`, `4_to_20_minutes`, `over_20_minutes`. |
| live | boolean | false | Only for a search/plain-text task. Restrict results to currently-live broadcasts. |
| sort | string | `relevance` | Only for a search/plain-text task. YouTube's own search only offers these two today -- "upload date" and "rating" sort options some older tools reference no longer do anything. One of: `relevance`, `popularity`. |
| subtitles | boolean | false | Only for a search/plain-text task. Restrict results to videos with subtitles or closed captions. |
| hd | boolean | false | Only for a search/plain-text task. Restrict results to HD video. |
| four\_k | boolean | false | Only for a search/plain-text task. Restrict results to 4K video. |
| hdr | boolean | false | Only for a search/plain-text task. Restrict results to HDR video. |
| three\_sixty | boolean | false | Only for a search/plain-text task. Restrict results to 360° video. |
| vr180 | boolean | false | Only for a search/plain-text task. Restrict results to VR180 video. |
| three\_d | boolean | false | Only for a search/plain-text task. Restrict results to 3D video. |
| creative\_commons | boolean | false | Only for a search/plain-text task. Restrict results to Creative Commons-licensed video. |
| enrich\_results | boolean | false | For a search, hashtag, playlist, or channel-tab task: fetch each video/Short/stream directly too, filling in the fields a listing alone doesn't have (full description, hashtags, exact view/like counts, captions, ...). One extra request per result -- off by default to keep a listing task cheap. |
| get\_comments | boolean | false | Collect the first page of top-level comments (up to 10) for a video. Applies directly to a video-URL task, and to a search/hashtag/playlist/channel-tab task only when Enrich Results is also on (comments require the same per-video fetch enrichment already does). One extra request per video on top of that. |
| get\_subtitles | boolean | false | Download the transcript text of one caption track for a video. Applies directly to a video-URL task, and to a search/hashtag/playlist/channel-tab task's video/Short/stream items only when Enrich Results is also on. Each fetch needs a real browser session (seconds to minutes) -- fine for a handful of videos, genuinely slow across a large listing. Empty if the video has no captions. |
| subtitle\_language | string | — | Only used when Get Subtitles is on. YouTube's own language code for the caption track to download -- see the result's caption\_languages field for what a given video actually offers. Left blank, whichever language the video's captions default to is used. If the requested language isn't available for a video, falls back to the default rather than failing. One of: `en`, `en-US`, `en-GB`, `en-CA`, `en-AU`, `en-IN`, `es`, `es-ES`, `es-419`, `es-US`, `fr`, `fr-FR`, `fr-CA`, `de`, `de-DE`, `de-AT`, `de-CH`, `it`, `it-IT`, `pt`, `pt-BR`, `pt-PT`, `nl`, `nl-NL`, `ru`, `ru-RU`, `ja`, `ja-JP`, `ko`, `ko-KR`, `zh-Hans`, `zh-Hant`, `zh-CN`, `zh-TW`, `zh-HK`, `ar`, `ar-SA`, `hi`, `hi-IN`, `bn`, `bn-IN`, `bn-BD`, `id`, `id-ID`, `vi`, `vi-VN`, `th`, `th-TH`, `tr`, `tr-TR`, `pl`, `pl-PL`, `sv`, `sv-SE`, `da`, `da-DK`, `no`, `nb`, `nn`, `fi`, `fi-FI`, `el`, `el-GR`, `he`, `he-IL`, `cs`, `cs-CZ`, `ro`, `ro-RO`, `hu`, `hu-HU`, `uk`, `uk-UA`, `bg`, `bg-BG`, `sk`, `sk-SK`, `hr`, `hr-HR`, `sr`, `sr-RS`, `sl`, `sl-SI`, `lt`, `lt-LT`, `lv`, `lv-LV`, `et`, `et-EE`, `fil`, `fil-PH`, `ms`, `ms-MY`, `sw`, `sw-KE`, `af`, `af-ZA`, `am`, `am-ET`, `gu`, `gu-IN`, `kn`, `kn-IN`, `ml`, `ml-IN`, `mr`, `mr-IN`, `ne`, `ne-NP`, `pa`, `pa-IN`, `si`, `si-LK`, `ta`, `ta-IN`, `te`, `te-IN`, `ur`, `ur-PK`, `zu`, `zu-ZA`. |
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "video",
"upload_date": "this_month",
"duration": "4_to_20_minutes",
"sort": "popularity",
"max_results": 200
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"type": "video",
"upload_date": "this_month",
"duration": "4_to_20_minutes",
"sort": "popularity",
"max_results": 200,
},
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"type": "video", "upload_date": "this_month", "duration": "4_to_20_minutes", "sort": "popularity", "max_results": 200}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/youtube-transcript-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your YouTube Transcript Scraper squid
Add URLs or inputs to your **YouTube Transcript Scraper** squid.
Crawler ID: `7a9835f866cd42905e75aaeadebe6aba`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
YouTube video, playlist, or channel URL. Example: `https://www.youtube.com/watch?v=dQw4w9WgXcQ`
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/tasks" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"squid": "YOUR_SQUID_HASH", "tasks": [{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"}]}'
```
```python Python theme={null}
import requests
headers = {"Authorization": "Token YOUR_API_KEY", "Content-Type": "application/json"}
response = requests.post("https://api.lobstr.io/v1/tasks", headers=headers,
json={"squid": "YOUR_SQUID_HASH", "tasks": [{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"}]})
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/youtube-transcript-scraper/credit-cost
Credit cost for the YouTube Transcript Scraper
1 credit per video transcript.
# Get Results
Source: https://docs.lobstr.io/examples/youtube-transcript-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from YouTube Transcript Scraper
Retrieve scraped data from your **YouTube Transcript Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Page number (default: 1)
## Result Fields
YouTube video identifier. Example: `dQw4w9WgXcQ`
Canonical URL of the video. Example: `https://www.youtube.com/watch?v=dQw4w9WgXcQ`
Video title. Example: `Rick Astley - Never Gonna Give You Up`
Full video description.
Keywords (tags) set by the creator.
Video length in seconds. Example: `212`
View count at collection time. Example: `1400000000`
Like count (null when likes are hidden). Example: `15000000`
Approximate comment count as displayed by YouTube. Example: `2.1M`
Publish date and time (UTC). Example: `2009-10-25T06:57:33Z`
Relative publish time as displayed by YouTube. Example: `16 years ago`
YouTube category. Example: `Music`
Whether the video is unlisted.
Whether YouTube flags the video as family safe.
Whether the video is or was a live broadcast.
Highest resolution thumbnail URL.
YouTube channel identifier. Example: `UCuAXFkgsw1L7xaCfnd5JJOw`
Channel name. Example: `Rick Astley`
Channel URL. Example: `https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw`
Channel handle. Example: `@RickAstleyYT`
Channel avatar image URL.
Subscriber count as displayed by YouTube. Example: `3.8M subscribers`
Language setting used for this row. Example: `en`
Language code of the primary transcript. Example: `en`
Display name of the primary transcript track. Example: `English`
Whether the primary transcript is auto-generated.
Primary transcript as timestamped segments (start, duration, text).
Primary transcript as plain text. Example: `We're no strangers to love...`
Number of words in full\_text. Example: `312`
Every downloaded caption track.
Number of downloaded tracks. Example: `3`
Every caption track the video offers.
'ok' when at least one track was downloaded, 'no\_captions' when none available. Example: `ok`
Whether a transcript was downloaded.
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"video_id": "dQw4w9WgXcQ", "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "title": "Rick Astley - Never Gonna Give You Up", "language": "en", "full_text": "We're no strangers to love...", "word_count": 312, "tracks_count": 3, "status": "ok"}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/youtube-transcript-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure YouTube Transcript Scraper settings
Configure your **YouTube Transcript Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| **url** | string | — | YouTube video, playlist, or channel URL |
| **language** | string | original | Caption language to download. 'original' uses the video's default language; 'en', 'fr', etc. downloads a specific language |
| **include\_auto\_generated** | boolean | true | Also download auto-generated (speech-to-text) tracks |
| **max\_results** | integer | — | Maximum videos collected for a playlist or channel URL |
## Code Examples
```bash cURL theme={null}
curl -X POST "https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH" \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"params": {"language": "en", "include_auto_generated": true, "max_results": 50}}'
```
```python Python theme={null}
import requests
requests.post("https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH",
headers={"Authorization": "Token YOUR_API_KEY", "Content-Type": "application/json"},
json={"params": {"language": "en", "include_auto_generated": true, "max_results": 50}})
```
## Response
```json 201 theme={null}
{"params": {"language": "en", "include_auto_generated": true, "max_results": 50}}
```
# Add Tasks
Source: https://docs.lobstr.io/examples/zillow-property-listings-scraper/add-tasks
POST https://api.lobstr.io/v1/tasks
Add tasks to your Zillow Property Listings Scraper squid
Add URLs or inputs to your **Zillow Property Listings Scraper** squid.
Crawler ID: `ed06bb5ca6544bbb638c544bac48ede1`
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Body
Hash ID of your squid.
Array of task objects.
## Task Fields
Zillow search URL or a link to a single listing. Example: `https://www.zillow.com/homes/for_sale/New-York-NY/`
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/tasks \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"squid": "ed06bb5ca6544bbb638c544bac48ede1",
"tasks": [
{"url": "https://www.zillow.com/homes/for_sale/New-York-NY/"}
]
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/tasks",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"squid": "ed06bb5ca6544bbb638c544bac48ede1",
"tasks": [
{"url": "https://www.zillow.com/homes/for_sale/New-York-NY/"}
],
},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"duplicated_count": 0, "tasks": [{"id": "TASK_HASH", "is_active": true, "params": {"url": "https://www.zillow.com/homes/for_sale/New-York-NY/"}, "object": "task"}]}
```
# Credit Cost
Source: https://docs.lobstr.io/examples/zillow-property-listings-scraper/credit-cost
Credit cost for the Zillow Property Listings Scraper
| Function | Cost (credits) | Notes |
| - | - | - |
| Export Listings | 1 | 1 credit per property listing. |
| Property Details | 1 | 1 extra credit per property listing when the add-on is enabled. Off by default. |
# Get Results
Source: https://docs.lobstr.io/examples/zillow-property-listings-scraper/get-results
GET https://api.lobstr.io/v1/results
Retrieve scraped data from Zillow Property Listings Scraper
Retrieve scraped data from your **Zillow Property Listings Scraper** runs.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
## Query Parameters
Hash of the squid to get results from
Page number (default: 1)
## Result Fields
Zillow Property ID, the stable identifier. Example: `37544670`
Direct URL of the listing on Zillow. Example: `https://www.zillow.com/homedetails/123-main-st-brooklyn-ny-11201/37544670_zpid/`
Listing status: FOR\_SALE, SOLD, FOR\_RENT, etc. Example: `FOR_SALE`
Asking price as a number. Example: `850000`
Price exactly as displayed by Zillow. Example: `$850,000`
Currency of the price. Example: `USD`
Sale price when the listing is sold. Example: `820000`
Date the home was sold (UTC). Example: `2026-06-15T00:00:00Z`
Full address on one line. Example: `123 Main St, Brooklyn, NY 11201`
Street part of the address. Example: `123 Main St`
Unit or apartment number. Example: `Apt 4B`
City. Example: `Brooklyn`
State code. Example: `NY`
ZIP code. Example: `11201`
Country code. Example: `USA`
Latitude. Example: `40.6928`
Longitude. Example: `-73.9903`
Number of bedrooms. Example: `3`
Number of bathrooms (half baths counted as 0.5). Example: `2.0`
Living area in square feet. Example: `1450`
Lot size in lot\_area\_unit. Example: `2000.0`
Unit of lot\_area\_value: sqft or acres. Example: `sqft`
Property type: SINGLE\_FAMILY, CONDO, TOWNHOUSE, MULTI\_FAMILY, etc. Example: `CONDO`
Number of days the listing has been on Zillow. Example: `14`
Zillow's estimated market value. Example: `860000`
Zillow's estimated monthly rent. Example: `3800`
Tax assessed value from the county. Example: `720000`
Last price change amount (negative = price cut). Example: `-25000`
Date of the last price change. Example: `2026-09-01T00:00:00Z`
Price reduction as displayed by Zillow. Example: `Price cut: -$25,000`
Cover photo of the listing. Example: `https://photos.zillowstatic.com/fp/abc123-cc_ft_960.webp`
All photos of the listing card.
Number of photos. Example: `32`
Brokerage that published the listing. Example: `Compass`
True when owned by Zillow. Example: `false`
True for Zillow Showcase listings. Example: `false`
True when promoted by Zillow. Example: `false`
True when a 3D home tour is available. Example: `true`
True when a video is available. Example: `false`
True when the listing has at least one photo. Example: `true`
Open house as displayed by Zillow. Example: `Sat, Sep 20 11:00 AM - 1:00 PM`
Start of the next open house (UTC). Example: `2026-09-20T15:00:00Z`
End of the next open house (UTC). Example: `2026-09-20T17:00:00Z`
Marketing label Zillow prints on the listing card. Example: `Open House`
How the listing reached Zillow. Example: `Listed by Compass`
For sale by agent. Example: `true`
For sale by owner. Example: `false`
An open house is scheduled. Example: `true`
New construction. Example: `false`
Coming soon. Example: `false`
Pending or under contract. Example: `false`
Sold at auction. Example: `false`
Foreclosure. Example: `false`
Bank owned (REO). Example: `false`
### Detail Fields
The following fields require `property_details: true` in settings.
Full listing description.
Listing agent name. Example: `John Doe`
Listing agent email. Example: `john.doe@compass.com`
Listing agent phone. Example: `+12125551234`
Phone for the listing brokerage. Example: `+12125559876`
MLS number of the listing. Example: `REBNY-5678901`
Name of the MLS. Example: `RealPlus`
When Zillow last checked the MLS. Example: `2026-09-15T08:00:00Z`
When the MLS record last changed. Example: `2026-09-01T12:00:00Z`
Year the home was built. Example: `2003`
Price per square foot. Example: `586.21`
Number of views of the listing page. Example: `4821`
Number of users who saved the listing. Example: `87`
Effective property tax rate, in percent. Example: `1.24`
Monthly HOA fee. Example: `650.0`
Provider block Zillow attaches to the listing.
Date the listing was posted (UTC). Example: `2026-09-01T00:00:00Z`
Price of the previous sale of this home. Example: `720000`
Time zone of the property. Example: `America/New_York`
Neighborhood name. Example: `DUMBO`
Unit of living\_area. Example: `Square Feet`
Number of full bathrooms. Example: `2`
Number of half bathrooms. Example: `0`
Number of three-quarter bathrooms. Example: `0`
Number of quarter bathrooms. Example: `0`
Total number of parking spaces. Example: `1`
Number of garage spaces. Example: `1`
True when the home has a garage. Example: `true`
True when the garage is attached. Example: `false`
True when the home has a carport. Example: `false`
True when the home has open parking. Example: `false`
Parking features from the MLS record.
Property sub types.
Virtual tour link. Example: `https://my.matterport.com/show/?m=abc123`
Zillow's at-a-glance fact table.
Short highlight phrases from Zillow.
Zillow 30-year fixed rate quoted on the listing. Example: `6.75`
Zillow 15-year fixed rate quoted on the listing. Example: `6.12`
Zillow 5-year ARM rate quoted on the listing. Example: `6.35`
Price history: list of .
## Code Examples
```bash cURL theme={null}
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=ed06bb5ca6544bbb638c544bac48ede1" \
-d "page=1"
```
```python Python theme={null}
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "ed06bb5ca6544bbb638c544bac48ede1", "page": 1},
)
print(response.json())
```
## Response
```json 200 theme={null}
{"total_results": 1, "data": [{"zpid": "37544670", "status": "FOR_SALE", "price": 850000, "full_address": "123 Main St, Brooklyn, NY 11201", "bed": 3, "bath": 2.0, "living_area": 1450, "home_type": "CONDO", "days_on_zillow": 14, "zestimate": 860000}]}
```
# Update Settings
Source: https://docs.lobstr.io/examples/zillow-property-listings-scraper/update-settings
POST https://api.lobstr.io/v1/squids/{squid_hash}
Configure Zillow Property Listings Scraper settings
Configure your **Zillow Property Listings Scraper** squid settings.
## Headers
Your API authentication token. Value: `Token YOUR_API_KEY`
Must be application/json. Value: `application/json`
## Squid Parameters
| Parameter | Type | Default | Description |
| - | - | - | - |
| price\_min | integer | — | Only collect homes at or above this price, in USD |
| price\_max | integer | — | Only collect homes at or below this price, in USD |
| beds | string | Any | Minimum number of bedrooms (Any, 1+, 2+, 3+, 4+, 5+) |
| baths | string | Any | Minimum number of bathrooms |
| home\_type | string | Any | Property type filter |
| status | string | For sale | For sale, Sold, or For rent |
| days\_on\_site | string | Any | "Listed or Sold Within" filter: only listings published (or sold, in Sold mode) within this window. The API param name stays `days_on_site`. |
| max\_results | integer | 1000 | Max listings per search (Zillow serves \~980 per search) |
| max\_unique\_results\_per\_run | integer | — | Max unique results across all tasks in the run |
| property\_details | boolean | false | Visit each listing page to collect full description, agent contacts, MLS info, year built, HOA fees, price history |
Setting `property_details: true` enables additional detail fields in results.
## Code Examples
```bash cURL theme={null}
curl -X POST https://api.lobstr.io/v1/squids/ed06bb5ca6544bbb638c544bac48ede1 \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"price_min": 500000,
"price_max": 1000000,
"beds": "2+",
"home_type": "CONDO",
"status": "For sale",
"property_details": true,
"max_results": 1000
}'
```
```python Python theme={null}
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/ed06bb5ca6544bbb638c544bac48ede1",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"price_min": 500000,
"price_max": 1000000,
"beds": "2+",
"home_type": "CONDO",
"status": "For sale",
"property_details": True,
"max_results": 1000,
},
)
print(response.json())
```
## Response
```json 201 theme={null}
{"params": {"price_min": 500000, "price_max": 1000000, "beds": "2+", "home_type": "CONDO", "status": "For sale", "property_details": true, "max_results": 1000}}
```
# lobstr.io API Documentation
Source: https://docs.lobstr.io/index
The most powerful and easy-to-use data collection API. 70+ ready-made crawlers, simple REST endpoints, structured JSON output.
Get your API key and make your first request in minutes.
Google Maps, LinkedIn, Twitter, Instagram, and more — ready to use.
Typed models, auto-pagination, sync and async clients.
## Core Concepts
The lobstr.io API is built around three primitives:
* **Squid** — a configured scraper instance tied to a crawler and your settings
* **Task** — a URL or keyword the squid will scrape
* **Run** — a single execution of a squid against its tasks
A typical workflow:
Include `Authorization: Token YOUR_API_KEY` in every request. Get your key from the [dashboard](https://app.lobstr.io/dashboard/api).
Pick a crawler (e.g. `google-maps-leads-scraper`) and create a squid with your settings.
Add URLs or keywords as tasks to the squid.
Trigger a run and poll for completion.
Fetch structured JSON results from `GET /v1/results`.
## Developer Tools
`pip install lobstrio-sdk`
`pip install lobstrio`
Run scrapers from Claude, ChatGPT, or Cursor.