# Manage billing details, payment methods, and invoices
Source: https://help.lobstr.io/billing/billing-information
Update your billing address and VAT details, add or remove payment cards, and download PDF invoices from your lobstr.io account settings.
This guide walks you through the key parts of managing your billing inside lobstr.io.
## Update billing information
1. Go to **Settings → Plans & Billing → Billing Information**.
2. Update the information you want to change (e.g., name, address, VAT ID).
3. Click **Save** to apply changes.
These updates apply to **future invoices**. Previous invoices remain unchanged.
## Add or remove payment methods
Go to **Settings → Plans & Billing → Payment Methods**.
**To add a card:**
1. Click **Add a new payment method**.
2. Enter your card details and save.
**To remove a card:**
* Click the delete icon next to the payment method you want to remove.
You must always have at least one valid payment method on file for your paid subscription to remain active.
## Download invoices
1. Go to **Settings → Plans & Billing → Billing History**.
2. Locate the invoice by issue date.
3. Click the download icon next to the invoice.
Your invoice downloads instantly as a PDF.
## Next: manage your subscription
To upgrade, downgrade, reset, pause, or cancel your plan, see: [How to manage your subscription](/billing/manage-subscription).
# How credit allocation affects your billing
Source: https://help.lobstr.io/billing/credit-allocation
Understand how daily vs monthly credit allocation works with your lobstr.io plan, and what happens when you switch modes mid-cycle.
Your lobstr.io plan includes a monthly credit allowance. How those credits are distributed depends on the allocation mode you choose — **daily** or **monthly**.
Different users have different needs:
* Some scrape data every day and want to avoid burning all their credits at once.
* Others want to run large one-off jobs and prefer all credits available upfront.
For the full concept walkthrough, see [Credits: How Usage Is Measured and Allocated](/core-concepts/credits).
## Daily allocation
With **Daily Allocation**, your monthly credits are divided by the remaining days in your billing cycle. You get a set amount of credits to use each day, which makes it easy to stick to a steady scraping routine and avoid running out early. Ideal for consistent daily scraping with a clear limit.
## Monthly allocation
With **Monthly Allocation**, you get all your credits for the month upfront. Use them however and whenever you want within the billing cycle — perfect for big scraping jobs that need lots of credits at once.
## Switching between modes
You can change your allocation mode anytime:
1. Go to **Settings** from the left sidebar of your lobstr.io dashboard.
2. Click **Usage settings**.
3. Under **Credit allocation mode**, choose **Daily** or **Monthly**.
Switching modes does not add or remove credits — it only changes how your existing balance is distributed.
## What if your Squid needs more credits than your daily quota?
If a scraping job needs more credits than you have for the day, you can set up a temporary pause so it resumes the next day.
In your Squid settings, go to **When to end run** and turn on **End run once all tasks consumed**.
Once you hit your daily limit, the run automatically pauses. The next day, when your daily credits refresh, the run picks up right where it left off — letting you complete larger jobs over multiple days without breaking your daily quota.
### Detailed walkthrough: spreading daily credits
By default, the scraper stops when the day's credits have been used up.
To make it pause instead and resume the next day:
* Go to your Squid settings.
* Open the **Settings** section.
* Select **End run once all tasks consumed**.
Press **Save & Exit**.
Go back to your Squid and restart the collection. The scraper will collect as much data as possible, pause when credits run out, and resume the next day.
This way, you can spread your daily credits over several days:
## Running out of credits
If you exhaust your credits before the billing cycle renews:
* **On daily mode:** wait for tomorrow's refresh, or switch to monthly to access any remaining balance.
* **On monthly mode:** wait for your next billing cycle, or [reset your billing cycle](/billing/reset-billing-cycle) to get a fresh allocation (this charges your plan price plus any applicable tax immediately).
## Related articles
* [Credits: How Usage Is Measured and Allocated](/core-concepts/credits) — full guide to credit modes
* [Reset Your Billing Cycle](/billing/reset-billing-cycle) — get fresh credits before renewal
* [Manage Your Subscription](/billing/manage-subscription) — upgrade for more credits
# How to upgrade, downgrade, or cancel your lobstr.io plan
Source: https://help.lobstr.io/billing/manage-subscription
Change your lobstr.io subscription plan at any time — upgrade for more credits, downgrade to save, or cancel and pause your account.
Need to change your plan? Upgrades, downgrades, and cancellations are all managed from the **Plans & Billing** section of your lobstr.io dashboard.
## Upgrade or downgrade your plan
Sign in at [app.lobstr.io](https://app.lobstr.io).
In the left-hand menu, scroll down and click **Upgrade plan**, located just below your credit usage counter.
Choose the plan you'd like to switch to.
Confirm your choice — your subscription updates instantly.
Or click here to go straight to the [plan upgrade/downgrade menu](https://app.lobstr.io/dashboard/pricing).
### What happens to my billing when I upgrade?
When you upgrade, the change takes effect **right away** — you don't have to wait for your current billing cycle to end.
You're refunded the unused portion of your current plan, and a new billing cycle begins with your new plan.
**Example:** You're on a €50 plan that started January 1st, and you upgrade to a €250 plan on January 15th.
* You get a refund of the unused time on the €50 plan — about €25.
* Your new billing cycle for the €250 plan runs from January 15th to February 15th.
You only pay for what you use — the upgrade is smooth and automatic.
## Plans and scraper access
Not every scraper is available on every plan. Some are **paid-plan only**, and the [store](https://lobstr.io/store) marks which ones.
If you launch a paid-only scraper while on the free plan, the run doesn't collect anything — it ends with the [`premium_plan_needed`](/core-concepts/run-stop-reasons#premium_plan_needed) stop reason, and the Squid is switched to inactive.
Upgrading alone doesn't restart that Squid. Because the failed launch deactivated it, you have to **set it back to Active** before it will run — see [Freeing up slots](/core-concepts/slots#freeing-up-slots) for where the status control lives.
[Scheduling](/core-concepts/scheduling) is also paid-plan only. On the free plan you can launch runs manually, but you can't set a Squid to run on a recurring basis.
## Cancel your subscription
Sign in to your lobstr.io account.
In the left-hand menu, click **Plans & Billing**.
Under your current plan details, click **Cancel subscription**.
Share a reason (it helps lobstr.io improve) and confirm.
Or click here to go straight to the [plan cancellation menu](https://app.lobstr.io/dashboard/plans#my-plan).
### What happens if I cancel mid-month?
You can cancel anytime — **you won't lose access right away**. You've already paid for the full billing cycle, so you keep all your credits and features until the end of that cycle.
**Example:** your plan renews on the 3rd of each month and you cancel on the 18th — your subscription stays active until the 3rd of the next month.
## Pause your account
There's no actual "pause" button on lobstr.io — but you can still take a break whenever you need.
To do that, just **downgrade to the free plan** from the **Plans & Billing** section. You can keep using the free version of lobstr.io in the meantime.
When you're ready to come back, simply upgrade to your preferred plan again. Your account will be right where you left it.
## Can I reset my subscription after using all my monthly credits?
Yes — see the detailed guide: [How to Reset Your Billing Cycle](/billing/reset-billing-cycle).
# Reset your lobstr.io billing cycle to get fresh credits
Source: https://help.lobstr.io/billing/reset-billing-cycle
Out of credits before your cycle ends? Reset your billing cycle at any time for a fresh allocation. Unused credits carry over — but they're spent last and expire after 30 days.
Burned through your credits before the cycle ended? You don't have to wait for your renewal date or move up a plan — you can reset your billing cycle at any time and start a fresh one immediately.
Resetting is for paid plans. On the free plan there's nothing to renew, so you won't see these options at all — you'll need to [pick a plan](https://app.lobstr.io/dashboard/pricing) first.
## How to reset your billing cycle
There's no dedicated reset button. You trigger a reset by renewing the plan you're already on.
In the left sidebar, go to **Plans & Billing**, then click **Upgrade plan**.
Find the plan you're already subscribed to and click **Renew now**. Don't pick a different plan — renewing the current one is what resets the cycle.
The **Reset Billing Cycle?** window shows exactly what you'll be charged, how many credits you'll end up with, and your new billing period.
Click the red **Reset for …** button. Your new cycle starts straight away.
There's no threshold to hit and no limit to worry about. You can reset whenever you like, as many times as you like — you're simply paying for another cycle each time.
## What it costs and what you get
The confirmation window breaks the whole thing down before you commit:
| Line | What it means |
| ------------------------ | ----------------------------------------------------------------------------- |
| **Plan charge** | Your current plan's price, charged again in full. |
| **VAT / tax** | Any tax that applies to your billing country, added on top. |
| **Credits reset to** | Your plan's standard monthly allocation, fresh. |
| **Credits carried over** | Whatever you hadn't spent from the cycle you're ending, with its expiry date. |
| **Total credits** | The two figures above, combined — your new balance. |
| **New period** | The dates your new cycle covers. |
For example, on a \$100 Pro plan with 82,733 credits left over, the window shows a \$100 plan charge plus \$20 VAT, credits reset to 100,000, 82,733 carried over, and a total of 182,733 credits — for \$120.
Resetting moves your billing date. Your new cycle starts the day you reset and runs for **30 days** — not to the same date next calendar month. A reset on 7 August gives you a period of 7 August – 6 September. Check the **New period** line in the window before confirming, so you know when your next charge lands.
## How carried-over credits really work
This is the part worth reading carefully, because carried-over credits don't behave like your fresh ones.
* **They're spent last.** Your balance is one pool, and your plan's fresh allocation is consumed first. You only start drawing on carried-over credits once you've used up everything your plan gave you this cycle.
* **They expire after 30 days.** The expiry date is shown in the confirmation window when you reset.
* **Expiry is all or nothing.** On the expiry date the entire remaining carried-over amount leaves your balance at once — there's no gradual wind-down.
* **Resetting again adds to what you're already carrying.** Reset a second time and whatever is left joins the new carried-over total — 10,000 unused credits, reset, then reset again, and you're carrying 20,000 on top of your fresh allocation. The 30-day clock restarts on the combined amount.
Because carried-over credits are spent last, they'll quietly expire unused if you don't get through your full plan allocation within those 30 days. And if you're actively drawing on them when they expire, you'll drop below what your running Squids need and scraping will stop mid-run.
So a reset is worth doing when you're genuinely out of credits and need to keep working now. It isn't a way to bank credits for later.
## Do credits carry over at a normal renewal?
No. When your cycle renews on its own at the end of the period, your usage counter simply resets and you start again with your plan's standard allocation. Anything you hadn't spent is gone.
Carrying credits over is specific to resetting — it's the one thing you get for paying early.
If you already have a carried-over balance from an earlier reset, a normal renewal doesn't wipe it. It stays until its own 30-day expiry date arrives.
## Reset automatically with auto billing reset
If you'd rather not watch your balance, **auto billing reset** resets the cycle for you once your usage crosses a threshold you choose, so a long job doesn't stall overnight because nobody was there to top it up.
Go to **Plans & Billing** and stay on the **My plan** tab. **Auto Billing Reset** sits inside your current plan card.
Flip the toggle. Two settings appear underneath.
Adjust **Usage threshold (%)** and **Max resets per 24h**, then click **Save**.
**Usage threshold (%)** — how far into your credits you get before a reset fires. Anything from `1` to `100`, defaulting to `100`. Lower it if you'd rather top up before you're completely dry.
**Max resets per 24h** — a spending-protection cap, anywhere from `1` to `10`, defaulting to `3`. The card tracks how many you've used (`0 of 3 used in the last 24h`). If you hit the cap, **auto billing reset switches itself off and you're notified** — it won't keep charging you.
The threshold measures your **monthly** usage, not your daily portion. If you're on [daily credit allocation](/billing/credit-allocation), getting through today's credits won't trigger a reset — it only fires once you've used up your plan's credits for the month.
Every automatic reset is a real charge: your plan price plus tax, exactly like resetting by hand. With the default cap of 3 in 24 hours, that's up to three times your plan price in a single day. Set **Max resets per 24h** to a number you'd be comfortable being billed.
If you switch the toggle on when your usage is already past the threshold, a reset can happen straight away — you may be charged as soon as you enable it, not at some later point in the cycle.
Unused credits carry over on an automatic reset just as they do on a manual one, with the same rules as [above](#how-carried-over-credits-really-work) — spent last, and expiring after 30 days.
### Your runs pick up where they left off
If your Squid uses the **End run once all tasks consumed** setting, a run that stalled for lack of credits pauses rather than ending, and starts again by itself once a reset has topped you up. Give it a little time — it won't restart the same second you're credited.
On the default **End run once no credit left**, the run finishes as **Done** instead, and you relaunch it yourself. See [`no_credits_left`](/core-concepts/run-stop-reasons#no_credits_left) for how the two settings differ.
### If a payment fails
You're notified, your runs pause, and auto billing reset stops there — it won't keep retrying in the background. Sort out your payment method and reset manually to get going again; automatic resets resume from that point.
To turn the feature off at any time, flip the toggle back.
## What happens when you run out
lobstr.io emails you a **Usage Alert** when you cross 80% and again at 100% of your allocation, so running dry shouldn't come as a surprise. On the free plan you'll only get the alert at 100%.
Once your credits are gone, runs in progress stop — they either pause until credits are available again or finish with a `no_credits_left` reason. Anything already scraped stays downloadable either way. See [run stop reasons](/core-concepts/run-stop-reasons) for the detail.
If you're resetting month after month, a higher plan is usually cheaper than repeatedly buying the same cycle — you get more credits at a better rate. [Compare plans](https://app.lobstr.io/dashboard/pricing).
## Related
Choose whether your credits are released daily or all at once
Upgrade, downgrade or cancel your plan
# lobstr.io credits: how usage is measured and allocated
Source: https://help.lobstr.io/core-concepts/credits
Credits are lobstr.io's usage currency. Learn what credits buy, where to find your balance, and how daily vs monthly allocation controls when you can spend them.
Credits are the usage currency in lobstr.io. Every scraper run consumes credits as it collects data, and every plan includes a monthly credit allowance you can spend across your Squids.
## What credits buy
The credit cost of a scraping job depends on the Squid and which features you enable. In general:
* **Scraped rows** — each result a Squid collects consumes credits. This covers both basic data collection and any additional data functions you enable. For example, on a LinkedIn leads scraper, collecting a profile from a search result is one function, and visiting the profile to pull extra details is a separate function — each adds to the row's credit cost. The exact amount varies by scraper and which functions are turned on.
* **Email enrichment** — available on scrapers that don't already return emails in their scraped data. Enrichment costs **9 credits per email found and validated**. Emails that can't be found, or that fail validation, don't cost credits. lobstr.io's enrichment has a bounce rate of **less than 3%** (accuracy above 97%).
* **Email validation** — available on scrapers where emails already appear in the scraped data but aren't pre-verified (e.g. [Google Maps Leads Scraper](/enrichment/emails-google-maps) pulling emails off business websites). Each email that passes validation costs **2 credits**. Emails that fail validation don't cost credits.
* **Phone enrichment** — finds a contact's work phone number from sources outside the scraped page. Costs **300 credits per valid work phone number found**. If a phone number is already part of the scraped data (for example on Google Maps or Leboncoin listings), that isn't enrichment — it's billed as part of the scraped row, not as phone enrichment.
Every product page on [lobstr.io/store](https://www.lobstr.io/store) has a **pricing calculator** showing exactly how many credits your chosen inputs and enrichment options will consume. Use it before launching a large run to estimate your cost. For plan-level pricing, see the [pricing page](https://www.lobstr.io/pricing).
## Viewing your credit balance
Your remaining credits and renewal countdown are always visible at the bottom of the left sidebar in your dashboard.
For a more complete view, open **Plans & Billing → My plan**. The card shows your plan name, start and end dates, price, credits left out of your monthly total, and the next billing date.
## Tracking your credit consumption
When you want to know **where your credits actually went** — not just how many are left — lobstr.io gives you two complementary views: an account-wide **Credits Usage** dashboard, and a per-run **Credits** tab. Both share the same **7d / 30d / Monthly** time-range toggle in the top-right.
### Account-wide: the Credits Usage page
Open **Credits Usage** in the left sidebar. The page has three tabs, each answering a different question.
A daily-spend chart with headline KPIs — the **when** of your consumption.
| Card | What it shows |
| --------------------- | ---------------------------------------------------------------------------------------------- |
| **Total Credits** | Credits spent across all your Squids in the selected window, with a delta vs. the prior window |
| **Total Runs** | How many runs produced that spend, with a delta vs. the prior window |
| **Avg / Active Day** | Average daily spend on days you actually ran something |
| **Credits Remaining** | Credits left in your current billing cycle |
The chart below plots daily consumption — quickest way to spot the day a spike happened, then click through to the runs from that day.
A ranked list of your **top 10 Squids by credit usage** in the window — the **which Squid** of your consumption.
Each row shows the Squid name, its scraper type, credits consumed, and number of runs in the window. A total row at the bottom sums the top 10. Use this when one Squid is eating most of your budget and you want to confirm which one.
Credits grouped by **scraper type** (Google Maps Leads Scraper, Sales Navigator Profile Scraper, etc.) — the **on what data source** of your consumption.
Each scraper is a collapsible row. **Expand a scraper** to see its own **Distribution** donut + **Cost by function** breakdown — i.e. how much that scraper spent on base scraping vs. each enrichment, across every Squid you run on it. Useful when several Squids share a scraper and you want to know whether the spend comes from base scraping or from enrichment.
### Per-run: the Credits tab on a run
Every run detail page has a **Credits** tab that breaks down the cost of that single execution.
Three summary cards sit at the top:
* **Total Credits** — credits this run consumed.
* **Total Results** — rows the run produced.
* **Avg. Cost / Result** — credits divided by results. This is the number to watch when a run feels expensive.
Below, three cards work together to attribute every credit to a specific function:
* **Distribution** — a donut chart showing the share of the run's total credits taken by each function.
* **Cost by function** — a per-function bar list with the exact credit count and percentage. Functions can be base scraping (e.g. `Export Listings`, `Export Listings (No Phone)`), `Get Phone Numbers`, email enrichment, email validation, etc.
* **Cost insight** — a one-line plain-English summary calling out the dominant function (for example: *"Export Listings (No Phone) accounts for 76% of this run's cost (132)."*).
**Debugging a run that cost more than you expected?** Compare the **Avg. Cost / Result** between the two runs of the same Squid:
* If the **Avg. Cost / Result is the same** but Total Credits is higher → the Squid simply scraped **more rows** this time (more tasks, deeper pagination, a wider input list).
* If the **Avg. Cost / Result jumped** → an **enrichment function got toggled on** between the two runs (or a more expensive setting was added). Open **Cost by function** to see exactly which function is responsible.
## Credit allocation modes
lobstr.io lets you choose how your monthly credits are distributed across the billing cycle.
With **Daily Allocation**, your monthly credits are divided by the remaining days in your billing cycle, giving you a fixed daily budget.
Ideal if you scrape on a consistent daily schedule and want to avoid burning through your budget in one run.
**Example:** 3,000 credits remaining with 10 days left = 300 credits per day.
With **Monthly Allocation**, your full credit balance is available from day one of the cycle. Use it whenever and however you want.
Best for large, one-time scraping jobs that need a lot of credits at once.
**Example:** 30,000 monthly credits to burn on a single bulk scrape — no daily cap in the way.
## How to switch allocation modes
You can change mode at any time from your account settings.
Click **Settings** in the left sidebar of your lobstr.io dashboard.
Select **Usage settings**.
Under **Credit allocation mode**, select either **Daily** or **Monthly**.
Switching modes doesn't add or remove credits — it only changes when you can access them.
## Spreading a large job across multiple days
If you're on daily allocation and a Squid needs more credits than your daily quota, configure it to pause automatically when credits run out and resume the next day.
Navigate to your Squid and click **Settings**.
Find the [**When to end run**](/core-concepts/runs#when-to-end-a-run) section and turn on **End run once all tasks consumed**.
Click **Save & Exit**, then press **Launch**. When today's credits are exhausted the run pauses; tomorrow, when credits refresh, it resumes where it stopped.
For the detailed walkthrough with screenshots of every state transition, see [How Credit Allocation Affects Your Billing](/billing/credit-allocation#what-if-your-squid-needs-more-credits-than-your-daily-quota).
## Related
* [How Credit Allocation Affects Your Billing](/billing/credit-allocation) — billing impact of daily vs monthly
* [Reset Your Billing Cycle](/billing/reset-billing-cycle) — get fresh credits before your renewal date
* [Pricing calculator](https://www.lobstr.io/pricing) — estimate credit and dollar cost per plan
# Filtering in lobstr.io: geo, category, and data cleansing
Source: https://help.lobstr.io/core-concepts/filtering
lobstr.io filters scraping results at the crawl level so you only keep — and pay for — leads that match your criteria. Filtering behaves differently depending on the scraper.
Search engines and professional networks don't always return exactly what you ask for. Google Maps can surface businesses from the wrong city or category. LinkedIn Sales Navigator can include leads that don't match your selected industry, company size, or seniority filters. lobstr.io addresses this with built-in filtering that runs at the crawling level — before results reach your output file — so your data is clean from the start.
Filtering happens automatically. You don't need to clean your data manually after a run — lobstr.io handles it during the scrape itself.
Filtering works differently depending on which scraper you use. Pick yours:
Geo Match and Category Match keep only the businesses inside your location and category — and skip the rest before you're billed.
Match Filters flag leads that don't fit your industry, company size, or seniority, and Data Cleansing tidies up messy profile names.
# lobstr.io email notifications: run alerts and account alerts
Source: https://help.lobstr.io/core-concepts/notifications
lobstr.io emails you when a Squid run finishes (optional, per-Squid) and automatically when a synced account needs attention — for example when its login cookies expire.
lobstr.io sends email notifications to the address tied to your lobstr.io account. There are two kinds:
* **Run notifications** — optional alerts when a Squid run finishes. You turn these on per Squid.
* **Account alerts** — automatic emails when a synced account needs attention, such as when its cookies expire. Always on, nothing to configure.
## Run notifications
Run notifications email you when a Squid run finishes. They apply to **both manual and scheduled runs**. You pick one of three options:
* **None** — no email is sent (default).
* **On success** — email sent when a run completes successfully.
* **On error** — email sent when a run fails or stops because of an error.
You can only pick one option at a time — success or error, not both.
### Enable run notifications
Navigate to your Squid and click **Settings**.
Open the **Notifications** section.
Select **None**, **On success**, or **On error**, then click **Save**.
Run notifications are per-Squid — configure them individually on each Squid you want alerts for.
## Account alerts
Some emails are sent **automatically** — you don't set these up, and there's no toggle. The most common is the **cookies-expired alert**.
When a synced account's login cookies expire, lobstr.io emails you right away so you can fix it before more runs stall. Any scrapers using that account are paused until you re-sync it.
The email tells you exactly which account needs attention:
* **Platform** — the synced platform the account belongs to (e.g. Facebook, Sales Navigator, Leboncoin, X).
* **Account** — the specific account whose cookies expired.
* **Status** — **Cookies Expired**.
* A **Manage Accounts** button that takes you straight to your [Accounts](https://app.lobstr.io/dashboard/accounts) page to re-sync.
To resume your runs, [refresh the expired cookies](/getting-started/account-sync#refresh-expired-cookies) by re-syncing the account. This alert is the email counterpart to the [`cookies_expired`](/core-concepts/run-stop-reasons) run stop reason.
Account alerts are automatic and always on — there's nothing to enable. They go to your lobstr.io account email, the same address used for run notifications.
# Run stop reasons: every done reason value, explained
Source: https://help.lobstr.io/core-concepts/run-stop-reasons
Reference for every value that can appear in the Done Reason column of the Runs table — what each one means, whether the run resumes by itself, and what to do next.
When a [run](/core-concepts/runs) ends or pauses, the **Done Reason** column on the Runs table records *why*. This page is a full reference for every value you might see there.
If you just want to know how runs work in general, start with [Runs](/core-concepts/runs). If a stop reason mentions a synced account, see [Account sync](/getting-started/account-sync) and [Account bans & limits](/safety/account-bans).
**The same reason can behave differently on different scrapers.** A few reasons pause the run on most scrapers but end it on one or two. Where that happens, the entry below says so. What the run does is decided by the scraper that raised the reason — not by the reason itself.
## Quick index
| Done reason | Category | What the run does |
| --------------------------------------------------------- | ---------------- | --------------------------------------------- |
| [`tasks_done`](#tasks_done) | Completion | Ends — **Done** |
| [`emails_verified`](#emails_verified) | Completion | Ends — **Done** |
| [`no_accounts`](#no_accounts) | Synced account | Ends — closes permanently |
| [`no_account_available`](#no_account_available) | Synced account | Pauses, auto-resumes |
| [`cookies_expired`](#cookies_expired) | Synced account | Pauses \~12 h, auto-resumes |
| [`logged_out`](#logged_out) | Synced account | Ends immediately |
| [`batch_wait`](#batch_wait) | Account limits | Pauses out a cooldown, auto-resumes |
| [`account_too_many_requests`](#account_too_many_requests) | Account limits | Pauses, auto-resumes |
| [`limit_exceeded`](#limit_exceeded) | Account limits | Pauses until tomorrow, auto-resumes |
| [`account_blocked`](#account_blocked) | Account limits | Pauses, or ends as **Error** |
| [`non_premium`](#non_premium) | Entitlement | Ends — **Error** |
| [`sales_seat_required`](#sales_seat_required) | Entitlement | Pauses 24 h, auto-resumes |
| [`no_credits_left`](#no_credits_left) | Plan & billing | Pauses or ends — depends on a setting |
| [`premium_plan_needed`](#premium_plan_needed) | Plan & billing | Ends — **Error**, and deactivates the Squid |
| [`slots_limit_exceeded`](#slots_limit_exceeded) | Plan & billing | Ends — **Error** |
| [`last_invoice_not_paid`](#last_invoice_not_paid) | Plan & billing | Ends |
| [`maintenance_fees_not_paid`](#maintenance_fees_not_paid) | Plan & billing | Pauses indefinitely — needs a manual relaunch |
| [`module_under_maintenance`](#module_under_maintenance) | lobstr.io side | Pauses, auto-resumes |
| [`empty_message`](#empty_message) | Scraper-specific | Ends — Leboncoin messaging only |
## Three things that are always true
Before troubleshooting any stop reason, these hold regardless of why the run stopped:
* **Your data is kept.** Whether a run pauses, ends, errors, or crashes outright, everything scraped up to that point is saved and exported. A stopped run always leaves you something to download.
* **A pause never redoes work.** When a paused run resumes, it only picks up tasks that weren't finished. Tasks that were mid-flight when the pause hit are handed back out, not lost. You are never charged twice for the same row.
* **Stopping costs nothing extra.** Credits are spent row by row as results come in, not in a lump at the end. A run that stops early has only spent credits on the rows it actually collected.
## How a stop reason maps to a run status
Each reason produces one of three outcomes, which is what you see in the **Status** column:
| Outcome | Status | What happens next |
| --------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Pause** | Paused | lobstr.io sets a relaunch time and the run resumes on its own. The log names the reason and the exact time it comes back: `⏸️ Run pause triggered by "Cookies have been expired." for "". It will be relaunched at ` |
| **Close** | Done (or Aborted) | The run is finished. Results are exported and downloadable. |
| **Error** | Error | The run is finished and flagged as a failure. Triggers an `Input error on ` email if that Squid has [error notifications](/core-concepts/notifications) on. |
The live console prefixes tell you which one you got at a glance: `⏸️` is a pause, `✅` is a clean finish, `❌` is an error, `💬` is neutral information.
**Webhook notifications fire on the run's status, not on the stop reason.** So a pause tells you the run paused, but not which reason paused it — to act on a specific reason, read the Done Reason column or the run log. Runs that end as **Aborted**, including anything you abort manually, don't send a webhook. For payload details, see the [API documentation](https://docs.lobstr.io).
### If you have several accounts linked, you may never see these
For most account-related reasons — [`cookies_expired`](#cookies_expired), [`batch_wait`](#batch_wait), [`account_too_many_requests`](#account_too_many_requests), [`limit_exceeded`](#limit_exceeded) and [`account_blocked`](#account_blocked) — lobstr.io first locks the offending account and checks whether the Squid has another usable one. If it does, the run **restarts immediately on that account** instead of pausing, and the log shows `🔄 Other accounts are available, restarting run`.
This is the practical reason to sync more than one account per platform. With a single account, every one of the reasons above stalls your run. With three, most of them cost you nothing but a log line.
## Normal completion
### `tasks_done`
**What it means** — every task in the Squid's task list was processed. This is the most common ending for a healthy run.
**What the run does** — ends as **Done**, exports results, and sends a ` is complete!` email if that Squid has success notifications turned on.
### `emails_verified`
**What it means** — every email address queued for verification was verified. Only appears on Squids with email verification enabled.
**What the run does** — ends as **Done**. Credits for this reason are counted per verified email, on top of the base scraping cost. See [Email enrichment](/enrichment/emails-sales-navigator).
## Synced account stops
These appear on Squids that use [synced accounts](/getting-started/account-sync) — LinkedIn, Sales Navigator, Facebook, Instagram, Leboncoin, and so on.
### `no_accounts`
**What it means** — the Squid has no account linked to it at all, so there's nothing to scrape with.
**What the run does** — closes permanently. It won't pick itself back up once you link an account, so you launch again yourself.
**How to fix it** — link an account from the Squid's settings or the **Accounts** section, then launch again. See [Account sync](/getting-started/account-sync).
### `no_account_available`
**What it means** — accounts *are* linked, but every one of them is currently unusable: busy on another run, or locked by a cooldown from a previous stop.
**What the run does** — pauses automatically and resumes as soon as one of the accounts frees up. Nothing is lost.
**How to fix it** — nothing; it resumes on its own. To stop it recurring, sync additional accounts so there's spare capacity, or stagger your schedules so two Squids don't compete for the same account.
### `cookies_expired`
**What it means** — the synced session no longer authenticates. Either the saved session data is no longer valid, or the platform rejected an authenticated request outright. lobstr.io retries and attempts a fresh login before giving up on it.
This is the single most common account stop, and it's the catch-all: several distinct login failures surface as `cookies_expired`.
**What the run does** — pauses for 12 hours and auto-resumes, so a re-sync inside that window costs you nothing. The status shows **Paused** and the Done Reason column shows `cookies_expired`. You also get an `Account needs attention — ` email, at most one per account per 24 hours.
**How to fix it** — re-sync the account from the **Accounts** section or from the Squid's settings. See [refreshing expired cookies](/getting-started/account-sync#refresh-expired-cookies).
For LinkedIn and Leboncoin, never sign out normally before re-syncing — use **Clear site data** in DevTools instead. A normal logout invalidates the session you're about to capture, and you'll be back here within the hour.
### `logged_out`
**What it means** — the site served a logged-out page in the middle of the run. Rare, and only produced by a few scrapers.
**What the run does** — ends immediately, with no retry.
**How to fix it** — re-sync the account and relaunch. If it repeats, the account is probably being signed out because it's in use elsewhere — avoid using a synced account in your own browser while a run is live.
## Account limit stops
### `batch_wait`
**What it means** — the account finished the batch of work it's allowed to do in one sitting, and is waiting out its cooldown. This is normal pacing, not a fault — it's how lobstr.io keeps an account's activity at a sustainable rate.
**What the run does** — pauses for the account's configured cooldown (up to 12 hours) and auto-resumes. Partial results are exported in the meantime.
**How to fix it** — nothing to fix. To finish large jobs faster, sync more accounts so the work spreads across several batches at once.
### `account_too_many_requests`
**What it means** — the platform returned a rate-limit response (HTTP 429). You asked for too much too quickly.
**What the run does** — always pauses and auto-resumes. The wait depends on the scraper: from 30 minutes to 4 hours on most, or until just after midnight for Sales Navigator and Twitter/X.
**How to fix it** — nothing urgent; it resolves itself. If it's constant, lower the Squid's [concurrency](/core-concepts/slots), slow the [schedule](/core-concepts/scheduling), or spread load across more accounts. For Sales Navigator specifically, see [Sales Navigator: too many requests](/guides/sales-navigator/too-many-requests).
### `limit_exceeded`
**What it means** — the account reached its usage limit on the target platform: search result caps, profile-view ceilings, daily message quotas, and so on. Every platform meters how much a single account can do in a given window.
The run log names the exact limit and the value it reached, in brackets after the reason:
```
⏸️ Run pause triggered by "Account's limit has exceeded." for "" (profiles limit reached the value of 1000).
```
Common ones on the Sales Navigator Leads Scraper are `profiles` (the 1,000-a-day profile-visit ceiling used by [Get Profile Details](/guides/sales-navigator/get-profile-details)) and `beautiful_links` (the 3,000-a-day ceiling used by [Get Beautiful Profile URL](/guides/sales-navigator/beautiful-profile-url)). Each limit is metered separately, and each has its own allowance.
**What the run does** — pauses and auto-resumes about 24 hours later. The window is a **rolling 24 hours from the first request that counted against that limit**, not a reset at midnight, so two different limits on the same account can free up at different times of day.
**How to fix it** — nothing, if you can wait — the run continues on its own. To move more volume, spread the work across more synced accounts so no single account carries the whole job.
This isn't a ban. Hitting a usage limit means the platform metered the account, not that it flagged it — the account stays perfectly usable once the window resets. See [Account bans & limits](/safety/account-bans) for the difference, and for realistic daily volumes per platform.
### `account_blocked`
**What it means** — the account can't be used because of its standing on the platform: a temporary restriction or a permanent ban.
**What the run does** — depends on how serious it is. A recoverable restriction pauses the run for about 4 hours (24 hours for Leboncoin messaging) and auto-resumes. A hard block ends the run as **Error**. Either way you get the account-attention email.
**How to fix it** — check the account by logging into the platform directly. If it's a temporary restriction, wait it out. If it's a ban, the account has to be replaced. See [Account bans & limits](/safety/account-bans) and [Account proxies](/safety/account-proxies).
## Platform entitlement stops
### `non_premium`
**What it means** — the scraper needs a paid subscription **on the target platform** (LinkedIn Premium, for instance) and the linked account doesn't have one.
**What the run does** — ends as **Error**.
**How to fix it** — upgrade the account on the target platform, or link an account that already has the required tier, then relaunch.
### `sales_seat_required`
**What it means** — the account no longer has an active Sales Navigator seat, so Sales Navigator data is out of reach.
**What the run does** — pauses for 24 hours and auto-resumes, which gives you a day to fix it without losing the run.
**How to fix it** — reactivate the Sales Navigator seat on that account and re-sync it, or swap in a different account that has a seat. The run picks up from where it stopped.
## Plan, credits and billing stops
### `no_credits_left`
**What it means** — you ran out of [credits](/core-concepts/credits) mid-run.
**What the run does** — decided by the Squid's **When to end run** setting:
* **End run once no credit left** (default) — the run ends as **Done** immediately.
* **End run once all tasks consumed** — the run pauses and auto-resumes just after midnight when credits refresh, continuing until every task is processed.
See [When to end a run](/core-concepts/runs#when-to-end-a-run).
**How to fix it** — wait for your next [credit allocation](/billing/credit-allocation), [reset your billing cycle](/billing/reset-billing-cycle) to refresh them now, or upgrade your plan. lobstr.io also emails you when you cross 80% and 100% of your allocation, so this shouldn't arrive unannounced.
Pairing **End run once all tasks consumed** with [daily credit allocation](/core-concepts/credits#credit-allocation-modes) turns `no_credits_left` into a feature: one large job automatically spreads itself across as many days as it needs.
### `premium_plan_needed`
**What it means** — the Squid, or a feature it uses, requires a paid lobstr.io plan and you're on the free plan.
**What the run does** — ends as **Error**, **and deactivates the Squid**.
**How to fix it** — upgrade on [Manage subscription](/billing/manage-subscription), then **reactivate the Squid** before launching. This is the step people miss: upgrading alone doesn't switch a deactivated Squid back on. See [Plans and scraper access](/billing/manage-subscription#plans-and-scraper-access) for which scrapers are paid-only.
### `slots_limit_exceeded`
**What it means** — launching this run would have taken you past the total [slots](/core-concepts/slots) your plan includes, counting every active Squid.
**What the run does** — ends as **Error**.
**How to fix it** — lower this Squid's slot count, deactivate a Squid you're not using, or upgrade for more slots. Remember that total usage is the sum of slots across all active Squids, not just the one you launched. See [When you hit your plan's slot limit](/core-concepts/slots#when-you-hit-your-plans-slot-limit) — the same ceiling stops you in Settings before a run ever gets this far.
### `last_invoice_not_paid`
**What it means** — an invoice has been outstanding for more than 5 days, so new runs are blocked.
**What the run does** — ends and is flagged as critical in the run log. Data already collected is still exported and downloadable.
**How to fix it** — settle the invoice from your billing settings. See [Billing information](/billing/billing-information).
### `maintenance_fees_not_paid`
**What it means** — the maintenance fee for a custom-built scraper is unpaid. Only relevant if lobstr.io built a bespoke module for you.
**What the run does** — pauses, and **does not auto-resume**. This is the one pause that waits for you rather than for a timer.
**How to fix it** — settle the fee with the team at `contact@lobstr.io`, then launch the Squid again manually. Waiting won't restart it.
## Scraper maintenance stops
### `module_under_maintenance`
**What it means** — the scraper itself is temporarily under maintenance, usually because the target site changed its layout or anti-bot setup and the engineering team is shipping a fix. The log says so explicitly.
**What the run does** — pauses and auto-resumes as soon as maintenance ends. You don't need to relaunch or check back.
**How to fix it** — nothing. See [Scraper status](/safety/scraper-status) for how maintenance is communicated and typical turnaround.
## Scraper-specific stops
### `empty_message`
**What it means** — a Leboncoin messaging Squid was launched with no message content, and an empty message can't be sent.
**What the run does** — ends immediately.
**How to fix it** — add your message template in the Squid's settings and relaunch. See [Personalize Leboncoin messages](/guides/leboncoin/personalize-messages).
## Telling similar reasons apart
Two sets of reasons look interchangeable and aren't. These are the rules that actually distinguish them:
* **`cookies_expired`** — the synced session went stale and no longer authenticates. By far the more common of the two, and the one you'll almost always see. Fix: re-sync the account.
* **`logged_out`** — the site actively served a logged-out page mid-run. Narrow, only a few scrapers, and no retry — the run ends rather than pausing.
All three throttle an account, from three different directions:
* **`account_blocked`** — the platform says this account can't be used at all. About the account's **standing**.
* **`limit_exceeded`** — the account used up a metered quota for the period: searches, profile views, messages. About total **volume**, and it resets on the platform's own schedule.
* **`account_too_many_requests`** — the platform returned HTTP 429: too many requests too fast. About **burst rate**, not total volume; lobstr.io backs off and retries.
## Where to see this in the app
The **Done Reason** column lives on the Runs table on every Squid page:
Click a run to open its detail page, then the **Logs** tab for the full console output. The log is where you'll find the details the column can't fit — the exact relaunch timestamp for a pause, the specific limit that was hit, or the platform's own error message.
## Still stuck?
If a run keeps ending on the same reason and nothing on this page resolves it, ping us on [Crisp chat](https://go.crisp.chat/chat/embed/?website_id=45b5fabf-a2d0-441c-b3de-2d517bdeeac9) or email `contact@lobstr.io` with the **Run ID** and the **Done Reason** — that's everything we need to dig in.
# Runs: how a Squid actually executes and produces data
Source: https://help.lobstr.io/core-concepts/runs
A run is a single execution of a Squid. Learn how runs are triggered, the lifecycle and statuses, the Runs table, the run detail page, and how concurrency works.
A **run** is a single execution of a [Squid](/core-concepts/squids). Every time a Squid works — whether launched manually, fired on a schedule, or triggered via the API — it creates a new run. Each run has its own ID, duration, results, credits consumed, and status, and is logged in the Squid's history.
In short: a Squid is the **configuration**. A run is the **execution** of that configuration at a point in time.
## How a run is triggered
A run starts in one of three ways:
* **Manually** — you press the **Launch** button on a Squid's page.
* **On a schedule** — if the Squid is set to run [Repeatedly](/core-concepts/scheduling), it fires automatically at every interval.
* **Via the API** — you can trigger runs programmatically using your [API key](/getting-started/api-key).
Once a run starts, everything lobstr.io does — browsing, scraping, enrichment, exporting — happens inside that run.
The **Launch** button is hidden while a run is in progress. Even if you change the Squid's settings during a live run, those changes don't affect the current run — they apply to the **next** run you launch.
## The runs table
Below the live console on every Squid page, the **Runs** tab shows all previous and active runs for that Squid.
Each row contains:
| Column | What it shows |
| ------------------ | ------------------------------------------------------------------------------------- |
| **Run ID** | Unique identifier for that execution (click to open the run detail page) |
| **Started At** | When the run kicked off |
| **Ended At** | When the run finished (blank if still running) |
| **Total Results** | Every row the scraper collected during the run |
| **Unique Results** | Rows left after deduplication — usually the number you care about |
| **Credits Used** | How many credits this single run consumed |
| **Duration** | Total run time |
| **Status** | Current state — see below |
| **Done Reason** | Why the run ended or paused (e.g. `tasks_done`, `cookies_expired`, `no_credits_left`) |
| **Download** | Downloads the CSV for just that run |
**Total Results** vs **Unique Results** — the delta is almost always duplicates removed. It can also include rows dropped by filters (for example, [Geo Match or Category Match](/guides/google-maps/filtering) skipping non-matching listings).
## Run statuses
A run moves through one of five states. You can see the current status in the Runs table, at the top of the run detail page, and in the **List of Squids** table on your dashboard (under the **Status** column, showing the current or last run's status for each Squid).
The run is active and collecting data. A progress bar shows how far along it is, and the live console streams logs in real time.
The run has temporarily stopped but will resume automatically once the blocking condition is resolved.
Common causes:
* The synced account hit a daily or batch limit (see [Account Bans & Limits](/safety/account-bans)).
* The account's cookies expired — [refresh them](/getting-started/account-sync#refresh-expired-cookies) to resume.
* Daily credits ran out while **End run once all tasks consumed** is enabled — the run picks up the next day when credits refresh.
* The scraper encountered a transient error.
You **can't download data from a paused run** unless you abort it first.
The run was stopped manually by pressing the **Abort** button. Partial data collected before the abort is still available — click the download icon on that row in the Runs table.
The scraper crashed because of a technical error on lobstr.io's side.
You can click the **Message** button above the Runs table to see the details.
You don't need to do anything — once the engineering team resolves the issue, the run automatically resumes.
The run finished successfully. All collected data is available for download in the Runs table, or from the run detail page.
The **Done Reason** column explains exactly *why* a run finished or paused — for example `tasks_done` (all tasks processed), `cookies_expired` (a synced account needs re-syncing), or `no_credits_left` (credits ran out). For the full list of values, whether each one resumes by itself, and what to do about it, see [Run stop reasons](/core-concepts/run-stop-reasons).
## When to end a run
A Squid's **Settings** have a **When to end run** option that controls what a run does when it runs out of credits — finish and stop, or pause and wait. This decides the [status](#run-statuses) the run ends in.
The default. As soon as the credits available to the run run out, the run is marked **Done** and stops immediately. Re-launching the Squid starts a **fresh run from the beginning** — it doesn't pick up where the last one left off.
The run keeps going until every task in the list has been processed. If credits run out before that happens, the run is **Paused** instead of ending. It resumes **automatically once credits refresh** (for example, the next day on [daily allocation](/core-concepts/credits#credit-allocation-modes)) and picks up exactly where it stopped.
Pairing **End run once all tasks consumed** with [daily credit allocation](/core-concepts/credits#credit-allocation-modes) is how you spread one large job across several days automatically — the run pauses each day when the daily budget is spent and resumes when it refreshes. See [Spreading a large job across multiple days](/core-concepts/credits#spreading-a-large-job-across-multiple-days).
## Aborting a run
While a run is **Running**, an **Abort** button appears at the top of the Squid page next to the progress bar.
Clicking **Abort** stops the run immediately. Any data the scraper already collected before the abort is preserved and downloadable — the status switches to **Aborted** and the download icon stays active in the Runs table.
## The run detail page
Clicking any row in the Runs table opens the **run detail page** for that specific execution. It shows four summary cards at the top — **Status**, **Credits Used**, **Total Results**, **Started At** — plus four tabs:
### Results
A paginated preview of the scraped data (50 rows per page). Use this to sanity-check output before downloading the full CSV.
### Tasks
The exact list of tasks this run processed — useful when you need to confirm which inputs were picked up, or to debug why a specific URL or query didn't return data.
### Credits
A breakdown of where the run's credits actually went — **Avg. Cost / Result** on top, then a **Distribution** donut, a **Cost by function** bar list (base scraping vs. each enrichment with credits and %), and a one-line **Cost insight** summary. This is the tab to open when a run cost more than expected. See [Tracking your credit consumption](/core-concepts/credits#tracking-your-credit-consumption) for the full walkthrough.
### Logs
The full live console output for that run — every page processed, every pause, every error.
## Slots and concurrency
A run executes at a given **concurrency** — the number of parallel instances working on your tasks at the same time. You'll see this in the very first line of the live log:
```
* Run 376b5febe09a46cdab885cee74a54430 started (2026-04-21 16:21:26)
* Concurrency: 1
```
**Slots** in lobstr.io serve two purposes:
* They cap how many Squids you can create on your plan.
* They cap how many parallel instances a run can use as its concurrency.
So if your plan gives you 30 slots, you can run a Squid at a concurrency of up to 30 — spreading the work across 30 parallel instances.
**Max concurrency is 20 per run**, regardless of how many slots your plan includes. A plan with 50 slots still caps each individual run at 20 concurrent instances.
For the full slot mechanics, see [Slots](/core-concepts/slots).
## Launching a run again
To re-run a Squid, simply press the **Launch** button on the Squid page — each press creates a new run entry in the Runs table. There's no "re-run this specific past run" button; the Squid's current settings are what get executed.
Because settings only take effect on the **next** launch, you can safely tweak a Squid while an existing run is mid-flight — your changes won't disrupt the run that's already going.
## Data retention
Run data (results, logs, the run itself) is stored for **28 days on paid plans** and **7 days on the free plan**. After that, results are permanently deleted from lobstr.io's servers. Download or export what you need before the window closes — see [Download Results](/data/download-results).
# How to schedule a Squid to run automatically
Source: https://help.lobstr.io/core-concepts/scheduling
Schedule lobstr.io Squids to launch automatically by minutes, hours, days, weeks, or specific dates — with per-Squid timezones and error notifications.
Instead of starting each run by hand, you can schedule a Squid to launch automatically — every few minutes, hours, days, weeks, or on specific dates each month.
Navigate to your Squid and click **Settings**.
Under the **Launch** section, click **Repeatedly**.
Pick the recurrence that fits your workflow (minutes / hours / days / weeks / months).
Configure your start time and any other options, then click **Save**.
Scheduling is **not available on the free plan**. You need a paid subscription to use the Repeatedly launch mode.
## Schedule types
Runs the Squid every X minutes (min 5, max 30).
**Example:** Set every 10 minutes and the Squid runs six times per hour, automatically.
Runs every X hours starting at a specific time.
**Example:** Every 3 hours starting at 9:00 AM → runs at 9:00, 12:00, 3:00, 6:00, and so on.
Daily or weekday-only runs at a specific time.
**Example:** Weekdays at 8:30 AM → select "Weekdays" and set start time to 08:30.
Runs on specific days each week at a chosen time.
**Example:** Mondays and Thursdays at 10:00 AM.
Runs on a specific date (1–30) each month at a set time.
**Example:** The 1st of every month at 9:00 AM for a monthly report kick-off.
## Timezone
By default, the schedule uses your account's timezone. To change it for a specific Squid, open its Settings and select a timezone from the **Timezone** dropdown, then click **Save**.
All scheduled runs follow the new timezone going forward.
## Scheduling multiple Squids at the same time
You can schedule as many Squids as you like to run at the same moment. Each Squid launches independently on its own schedule — as long as your account has enough credits and slots available.
## Pausing or disabling a schedule
To temporarily stop a scheduled Squid without deleting its configuration, **deactivate** the Squid. All scheduled runs stop immediately.
Reactivate it when you're ready — the schedule picks up where it left off.
If you'd rather keep the Squid active but launch it only when needed, switch the launch mode from **Repeatedly** to **Manually**:
1. Open the Squid's **Settings**.
2. Open the **Launch** section.
3. Change the launch mode from **Repeatedly** to **Manually**.
Your schedule settings are preserved, so you can flip back to automatic at any time.
# Slots: how concurrent scraping capacity works
Source: https://help.lobstr.io/core-concepts/slots
Slots are parallel scraper instances. They cap how many scrapers can run at the same time across your Squids, and how many instances a single run can use as concurrency.
Slots control how many scrapers lobstr.io can run in parallel at the same time. Every plan includes a fixed number of slots, and you can see your current usage on the dashboard home page.
## What is a slot?
A slot is a **parallel scraper instance**. Each Squid has a `slots` setting that determines how many scrapers it launches simultaneously to process its tasks — and each of those scrapers counts as one slot against your plan's total.
Open your [Squids list](https://app.lobstr.io/dashboard/squids) and you'll see the per-Squid slot count next to each entry:
Why do some Squids have more than one slot? Because the `slots` setting has been raised in their **Settings** to boost speed — each additional slot adds another scraper working through the task list in parallel.
To change a Squid's slot count: open the Squid → **Settings** → adjust the `slots` value → **Save & Exit**. Higher slots = faster runs, at the cost of more of your plan's total capacity being used at once.
## How your total slot count is computed
Your total is **the sum of the `slots` setting across all your active Squids**.
For example, with 5 active Squids:
| Squid | Slots setting |
| --------- | ------------- |
| Squid A | 1 |
| Squid B | 4 |
| Squid C | 1 |
| Squid D | 1 |
| Squid E | 4 |
| **Total** | **11** |
## Limits on the `slots` setting
There are two caps on how high you can set a Squid's `slots` value:
* **20 per run** — regardless of your plan's total, a single Squid can't exceed 20 parallel instances in one run. Even on the Team plan (50 slots), each individual Squid is still capped at 20.
* **Number of synced accounts** — for Squids that require account sync (Sales Nav, Leboncoin, Twitter/X, Facebook), the `slots` value is also capped by the number of accounts you have synced for that platform. One scraper instance uses one account's session, so you can't run 10 instances with only 5 linked accounts.
Plan slot allowances:
* **Free** — 1 slot
* **Starter** — 2 slots
* **Pro** — 10 slots
* **Team** — 50 slots
To unlock higher `slots` on account-synced Squids, [sync more accounts](/getting-started/account-sync#sync-multiple-accounts) for that platform. Each additional synced account raises the ceiling.
## When you hit your plan's slot limit
Because your total is the sum of `slots` across every **active** Squid, you can run out of capacity in two ways: raising one Squid's `slots` too high, or simply having too many Squids active at once.
When you're at your limit, lobstr.io won't let you claim more capacity than your plan includes — raising a Squid's `slots` past what's left over is refused when you save. On the free plan, with a single slot, that means one active Squid at a time.
You have three ways out:
* **Free up slots** — deactivate a Squid you're not using (see below). This is instant.
* **Stagger schedules** — if two Squids don't actually need to run simultaneously, offset their [schedules](/core-concepts/scheduling) so they take turns using the same capacity.
* **Upgrade** — see [Manage subscription](/billing/manage-subscription).
The same ceiling applies at launch time, not just in settings. If a run starts when your active Squids already account for every slot you have, it stops with the [`slots_limit_exceeded`](/core-concepts/run-stop-reasons#slots_limit_exceeded) stop reason instead of running.
## Freeing up slots
If you're approaching your plan's total and need capacity for another Squid, deactivate any Squid you're not currently using. Deactivating a Squid releases its slots immediately.
Go to [your Squids list](https://app.lobstr.io/dashboard/squids).
Click the Squid you want to pause.
Click **Change Status to → Inactive**. Your total slot count drops by that Squid's `slots` value immediately.
You can reactivate the Squid at any time — its slots are re-added to your total.
If you regularly need more concurrent capacity than your plan allows, upgrading is the most direct fix. Alternatively, stagger your Squid schedules so they don't all fire at the same moment.
## Related
* [Runs](/core-concepts/runs) — how concurrency works inside a single run
* [Account Sync](/getting-started/account-sync) — synced accounts are what let you raise `slots` on account-gated Squids
* [Account Bans & Limits](/safety/account-bans#how-many-accounts-can-you-sync-with-lobstrio) — why slot capacity matters for account-based scraping
# Squids: configure, schedule, and manage scraping jobs
Source: https://help.lobstr.io/core-concepts/squids
Squids are lobstr.io's scraping jobs. Configure, name, schedule, and manage Squids to automate data collection on LinkedIn, Google Maps, and more.
A Squid is a scraping job in lobstr.io. Each Squid is configured to target a specific data source — Google Maps, LinkedIn, Twitter/X, and so on — and collects structured data whenever it runs. You can launch Squids manually on demand or schedule them to run automatically on a recurring basis.
## Creating a Squid
Go to [app.lobstr.io](https://app.lobstr.io) and log in.
From your dashboard, click the **Create a new Squid** button.
Search for the scraper you want to use and click it. The Squid is created and opens in your dashboard, ready to configure.
**Squid names have to be unique.** If you try to save a name another of your Squids already uses, it's refused — pick a different name, or rename the existing Squid first.
Two things can stop a newly created Squid from launching:
* **Your plan doesn't cover the scraper.** Some scrapers are paid-plan only. On the free plan, launching one won't produce data — see [Plans and scraper access](/billing/manage-subscription#plans-and-scraper-access).
* **You're out of slots.** A new Squid needs capacity from your plan's total. See [When you hit your plan's slot limit](/core-concepts/slots#when-you-hit-your-plans-slot-limit).
## Renaming a Squid
lobstr.io assigns a default name when you create a Squid. You can rename it at any time to keep your dashboard organized.
Go to your [dashboard](https://app.lobstr.io/dashboard/squids) and click any Squid in the list.
Click the **Settings** icon at the top of the Squid page.
Click the current name at the top of the Settings panel and type the new name.
Click **Save & Exit** to apply.
## Scheduling
You can schedule a Squid to launch automatically on a recurring basis — every few minutes, hours, days, weeks, or on specific dates each month. See [Scheduling](/core-concepts/scheduling) for the full guide.
## Run history
Every Squid keeps a full log of its runs in the **Runs** table beneath the live console. For the details on run statuses, timings, credits used, aborting, and everything the Runs table shows, see [Runs](/core-concepts/runs).
Run data is stored for **28 days** on paid plans and **7 days** on the free plan. Download or export results before they expire. See [How to Download Results](/data/download-results).
# Tasks: the inputs that tell a Squid what to scrape
Source: https://help.lobstr.io/core-concepts/tasks
Tasks are the inputs for a lobstr.io Squid — URLs, queries, usernames, or structured params. Learn how tasks are added, deduplicated, and re-processed every run.
A **task** is a single unit of input for a [Squid](/core-concepts/squids). It's what you hand the scraper so it knows *what* to scrape — a URL to visit, a query to search, a username to look up, or a set of structured parameters. Each Squid can hold up to **10,000 tasks**, and every run you launch processes all of them.
## What a task looks like
The accepted input type depends on the Squid. Common shapes:
* **URL** — a link to a page, list, or profile (e.g. `https://www.realtor.com/realestateandhomes-search/California/pg-5`).
* **Plain text query** — a search term (e.g. `restaurant`).
* **Username** — a handle or ID (e.g. a Twitter handle or YouTube channel).
* **Structured parameters** — fields like Category, Country, Region, District, City (used by Squids like Google Maps Leads Scraper).
Some Squids only accept one shape. Others — like **Google Maps Leads Scraper** — accept both URLs and structured params. The task input form in the Squid's **Add tasks** step always shows you what that specific Squid expects.
## How to add tasks
From the Squid's **Add tasks** step, you have three ways to load tasks:
### 1. Type or paste a single task
Paste a URL (or query / username) in the input field and click **Add**. The task appears in the list below. You can add many individual tasks this way — good for small, ad-hoc lists.
### 2. Upload a CSV
When you need to run a Squid against many URLs or keywords, adding them one at a time is impractical. Upload a CSV with one task per row instead — ideal when you have 100 or more tasks to process (up to the 10,000-task limit).
Each Squid expects a specific column header in your CSV file. To find it, open your Squid and click the **settings icon**.
Then hover over the **Upload file** button — the expected column label is displayed there.
In this example, for [Google Maps Export Reviews](https://www.lobstr.io/store/google-maps-iter-reviews), the label is `url`. Note it down — you'll need it for the next step.
Create a CSV file with:
* The label from Step 1 in the first cell (e.g. `url`).
* One task per row below it.
Save the file with a `.csv` extension — for example, `tasksDemo.csv`.
Click **Upload file** on your Squid page and select the file you just created.
lobstr.io imports your tasks and shows a confirmation — e.g. **"19 tasks imported."** Click **Launch** to start the run.
The column header in your CSV must exactly match what the Squid expects, including capitalization. If the header is wrong, no tasks will be imported — always verify the label in Step 1 before building your file.
### 3. Use params
For Squids that support structured input, toggle **Use params** to fill in fields like Category, Country, Region, District, and City. Every combination you submit becomes one task.
See the [Scrape a country (Google Maps)](/guides/google-maps/scrape-country) guide for a concrete example of the params flow.
## Deduplication and validation
Two things happen automatically when you add tasks:
* **Deduplication** — if the same task is already in the list, it's not added again. This prevents accidental double-processing when you upload overlapping CSVs.
* **Validation** — tasks that don't match the Squid's expected input format are skipped. If you paste a URL into a Squid that expects a username, that task won't be added.
If a CSV upload reports fewer tasks than you expected (e.g. "18 tasks imported" from a 20-row file), the missing ones were either duplicates already in the list or invalid format.
### When tasks won't add at all
Fewer tasks than expected is normal. **Zero** tasks added, or an upload that's rejected outright, usually comes down to one of these:
| What you're seeing | Cause | Fix |
| ---------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| Nothing imported from a valid-looking CSV | The column header doesn't match what the Squid expects, character for character | Copy the label from the Squid's own input field into the first cell |
| The file is rejected before any import happens | lobstr.io couldn't read the file's character encoding | Re-save as **CSV UTF-8** from Excel, Google Sheets, or your editor |
| A large file is rejected | The upload exceeds the file size limit | Split it into several smaller CSVs and upload them one after another — tasks accumulate across uploads |
| Some rows added, others silently skipped | Those rows were duplicates, or the wrong input type for this Squid | Check the format the Squid expects — a URL won't be accepted where a username is required |
| The task counter stops climbing | You've hit the **10,000 task** ceiling for this Squid | Split the work across more than one Squid |
A run needs at least one task. Launching a Squid with an empty task list won't start one — add tasks first, then launch.
## The task list
Once added, tasks appear in a list with a **task counter badge** showing the current count. From the list toolbar you can:
* **Upload file** — import a CSV of tasks.
* **Download** — export the current task list as a CSV.
* **Search** — find a specific task by keyword.
* **Empty tasks** — wipes **the entire list**.
## Delete tasks or empty the task list
You have two ways to remove tasks:
* **Delete selected tasks** — tick the checkbox next to a task (or multiple tasks) and click **Delete**. Only the selected tasks are removed; the rest of the list stays intact.
* **Empty the entire list** — click **Empty tasks** to clear every task in the Squid in one action.
**Empty tasks** deletes every task in the Squid — both already-processed and unprocessed. There's no undo.
## How tasks work with runs
This is the most important thing to understand about tasks:
**Every run re-processes every task in the list.** There's no queue that drains over time. If your Squid has 500 tasks, each launch scrapes all 500 — not only "new" ones.
This model is intentional — it lets you scrape fresh, up-to-date data on a schedule without manually re-adding tasks. It also means:
* To scrape something **new**, add new tasks to the list before the next launch.
* To **stop** scraping certain tasks, remove them from the list (or click **Empty tasks** and start over).
* If you want every run to pull fresh data for the same inputs (e.g. a weekly Google Maps refresh), just leave the list alone and [schedule the Squid](/core-concepts/scheduling).
The Squid header reflects this with live counters during a run:
* **Tasks done** — how many tasks the current run has finished.
* **Remaining tasks** — how many are still pending in the active run.
Both reset to `0 / total` at the start of the next run.
## Per-task results inside a run
Every run's detail page has a **Tasks** tab showing what happened to each individual task:
For each task:
* **URL** (or query / username / params) — the task input.
* **Started At** / **Ended At** — when the scraper worked on this specific task.
* **Total Results** — rows collected for this task.
* **Last Result** — final item index written to the output for this task.
* **Total Pages** — how many paginated pages the scraper walked for this task.
* **Done Reason** — why processing of this task ended.
This tab is useful for diagnosing uneven runs — if one task collected 0 results while others collected hundreds, the Done Reason column usually tells you why.
## Related
* [Runs](/core-concepts/runs) — how a run consumes the task list and produces results
* [Squids](/core-concepts/squids) — the configuration that owns the task list
# Convert a lobstr.io CSV export into an Excel spreadsheet
Source: https://help.lobstr.io/data/csv-to-excel
Open lobstr.io CSV exports cleanly in Excel using Google Sheets as an intermediary — three simple steps to get a properly formatted spreadsheet.
Have you tried opening a CSV file of scraped data in Excel, only to get a bunch of unreadable, cramped data?
The reliable fix is to route through Google Sheets first, which handles the import correctly and then lets you download a clean `.xlsx` file.
## Step-by-step instructions
Open the Sheets home screen at [sheets.google.com](https://sheets.google.com/) and click **+** to create a new blank spreadsheet.
Click **File**, then **Import**.
Click the **Upload** tab, then **Browse** and choose the CSV file you downloaded from lobstr.io.
Click **Import data**. Google Sheets creates a new file with each column properly separated.
Click **File → Download → Microsoft Excel (.xlsx)**.
An Excel file downloads to your computer. Double-click to open it — you now have a clean, structured, reliable Excel file.
If you regularly need your data in Excel, set up the [Google Sheets export](/data/export-to-google-sheets) integration. Results are pushed to your spreadsheet automatically after every run, and you can always download the sheet as Excel from there.
# How to download scraped results from a lobstr.io Squid
Source: https://help.lobstr.io/data/download-results
Once a Squid run completes in lobstr.io, download results as a CSV — from an individual run or all runs combined. Data is stored for 28 days.
After a Squid finishes running, all collected data is saved and ready to download as a CSV file. You can grab the results from a single run or download everything across all runs in one combined file — whichever fits your workflow.
## Download results from an individual run
You can download results from any individual run, including the most recent one.
1. Scroll down to the **Runs** table below the live console.
2. Find the run you want.
3. Click the **download icon** (the small downward arrow) on the right side.
The CSV file downloads instantly. This method works whether you're downloading the latest run or a past one.
## Download results from all runs at once
Need all your data in one go? Click the big green **Download** button at the top right of the Squid page — next to the **Launch** button.
This downloads a single CSV file with data from every completed run of that Squid, merged together. It's the fastest way to pull everything without downloading runs one by one.
## Can I export results to Google Sheets?
Yes. You can set up a Squid to automatically export results to a Google Sheet after every run.
* Select **Export data from last run** to export only the latest run.
* Select **Export data from all runs** to append every run's data below the previous results instead of overwriting.
The Google Sheets export applies to future runs only. Past runs are not retroactively exported.
See the full guide: [Export to Google Sheets](/data/export-to-google-sheets).
## Can I download results as an Excel file?
lobstr.io does not export directly in Excel (`.xlsx`) format. All downloads are CSVs — a universal spreadsheet format that every major tool supports. Converting a CSV to Excel takes a few clicks: [How to convert a CSV file to Excel](/data/csv-to-excel).
## How long is my data available?
lobstr.io keeps your data for **28 days** on premium plans (7 days on the free plan) after each Squid run.
That means:
* You can download your run results anytime during that window.
* You can re-download the same run as many times as you need — no limit.
* After 28 days, the data is automatically deleted from lobstr.io's servers and can't be recovered.
For long-term storage, use the Google Sheets export or save your CSV files locally as soon as each run completes.
# Export scraped data automatically to Google Sheets
Source: https://help.lobstr.io/data/export-to-google-sheets
Connect lobstr.io to Google Sheets and automatically push scraped results into a collaborative spreadsheet after every Squid run — no manual uploads needed.
Instead of downloading a CSV after every run and re-uploading it manually, you can connect your Squid to a Google Sheet so results are pushed there automatically. This keeps your data in one place, makes it easy to share with teammates, and saves you the repetitive download-and-upload cycle.
## Watch the full walkthrough
## Step-by-step instructions
Go to [Google Sheets](https://docs.google.com/spreadsheets/u/0/) and create a new spreadsheet.
Next, make the sheet accessible to lobstr.io so its scrapers can write to it.
Click **Share**.
Under **General access**, select **Anyone with the link**.
Then change the role to **Editor**.
Finally, click **Copy link** — you'll need this URL in the next step.
Go back to your Squid page in lobstr.io.
Click the **Delivery** icon in the top-right of the Squid page.
Then:
1. Tick the **Google Sheet** checkbox.
2. Paste the Google Sheet URL in the field.
You can click **Test Google Sheet** to confirm the sheet is correctly configured and attached to the Squid before saving.
There are two radio buttons:
* **Export data from last run** — only the latest run's data is written to the sheet. Each new run overwrites the previous export. Use this when you only need the freshest dataset.
* **Export data from all runs** — every time a new run completes, its results are appended below the previous rows. Use this to build one continuously growing, consolidated dataset.
If you select **Export data from last run**, each new run overwrites the data from the previous one. Choose **Export data from all runs** if you want to preserve history.
Click **Save**.
Click **Launch** to start a run. Once it completes, lobstr.io automatically pushes the results to your Google Sheet.
From this point on, every future run triggers an automatic export — no manual steps required.
Google Sheets export applies to **future runs only**. Data from runs that completed before you set up the integration will not be exported retroactively. To get historical data into your sheet, download the combined CSV with the green **Download** button and import it manually.
# Verified business email collection from Google Maps
Source: https://help.lobstr.io/enrichment/emails-google-maps
lobstr.io discovers and verifies business email addresses for Google Maps listings by crawling business websites linked in their profiles.
Google Maps listings don't display email addresses directly — so it's not immediately obvious how email collection works.
Here's the full picture of how lobstr.io does it and what to expect.
## How email collection works
lobstr.io collects emails by **visiting the websites listed on Google Maps business profiles**.
To enable it, turn on the **Extract Emails from Website** option in your Squid settings.
When this option is on, lobstr.io will:
1. Check if a Google Maps listing includes a website link.
2. Visit the listed website.
3. Look for email addresses in common sections like the footer or Contact page.
If it finds any, they're automatically added to your results.
### How much does email collection cost?
Email collection costs **1 credit per website (listing) with an email found** — not per email. If a website has 3 emails, it's still 1 credit; if the website has no email (or the listing has no website), it's **0 credits**. You're only charged on results, not on attempts.
## How to verify collected emails
To check which collected addresses are valid, turn on the **Verify emails** toggle in your Squid settings. Verification then runs automatically as part of the scrape — there's no separate step after the run.
With the toggle on, every email lobstr.io collects is validated during the run, and each result's status appears in the downloaded file. The red badge next to the toggle shows the cost — **2 credits per valid email**.
### How accurate is the verification?
lobstr.io uses its own email validation system on the backend.
The system is up to **97% accurate** — meaning only a 3% chance of bounce for emails marked valid. It also tests catch-all domains (which most services label as "catch-all" or "unknown") using an advanced algorithm.
You can see the validation status in the `Email Status` column next to your email.
Learn more: [Email validation statuses](/enrichment/emails-sales-navigator#what-does-the-email-status-mean).
### How much does verification cost?
* **2 credits per valid email.**
* **0 credits** if the email is invalid.
* All emails and their validation status appear in your downloaded file regardless of the result.
Based on lobstr.io's monthly plans, that works out to:
* **5,000 validated emails for \$20** (Starter)
* **50,000 validated emails for \$100** (Pro)
* **500,000 validated emails for \$500** (Team)
* **1,000,000 validated emails for \$1,000** (Business)
## Why didn't I get any email addresses?
If you didn't see any emails in your results, possible reasons:
* The **Extract Emails from Website** option wasn't turned on.
* The business listing didn't include a website.
* The listed website didn't have any visible email addresses.
Google Maps Search Export collects social media links (Facebook, Instagram, etc.) but the scraper **does not** visit those pages to look for emails. Use the [Facebook Page Details Export](https://www.lobstr.io/store/facebook-page-details-export) to collect emails from Facebook pages.
## How to collect emails from Facebook pages of local businesses
To collect email addresses from Facebook pages, use the [Facebook Page Details Export](https://www.lobstr.io/store/facebook-page-details-export) crawler.
1. Copy the Facebook page URLs from your Google Maps Scraper results.
2. Paste them into the Facebook Page Details Export tool.
3. Launch the scraper.
It collects email addresses (if available in the page's About section) alongside other relevant business data.
# Email discovery from LinkedIn Sales Navigator profiles
Source: https://help.lobstr.io/enrichment/emails-sales-navigator
lobstr.io automatically finds and server-verifies professional email addresses for every Sales Navigator lead in your scraped dataset.
The lobstr.io email discovery service finds **professional and verified email addresses** from any LinkedIn Sales Navigator profile, using the information scraped from LinkedIn.
When you download your dataset, you'll find a dedicated `email` column:
All emails are **server-verified** — meaning lobstr.io sent an email to the address and confirmed it was successfully received. You can use them with absolute peace of mind.
## How much does it cost?
Email enrichment uses the **credits** from your lobstr.io subscription — there's no separate email-credit pack.
Each enriched lead costs **10 credits** in total:
* **1 credit** to scrape the Sales Navigator profile (so lobstr.io has the name and company for enrichment).
* **9 credits** to find and validate the email.
Based on lobstr.io's monthly plans, that works out to:
* **1,000 verified emails for \$20** (Starter)
* **10,000 verified emails for \$100** (Pro)
* **100,000 verified emails for \$500** (Team)
* **200,000 verified emails for \$1,000** (Business)
lobstr.io does **not** offer standalone email enrichment. You can't upload an existing list of leads and get emails added — email discovery only runs on profiles lobstr.io has scraped on its own platform.
Check the [Sales Navigator Leads Scraper pricing calculator](https://www.lobstr.io/pricing?product=sales-navigator-leads-scraper#simulator) for a live estimate based on your inputs.
## What happens if no email is found?
**No email, no enrichment charge.** The 9 enrichment credits are only consumed when an email is successfully found and validated. The 1 credit for scraping the profile is always charged — that's part of every scraped row regardless of enrichment.
Success rate depends on the company type:
* **80%+** for large companies and startups
* **30–50%** for SMEs
* **2–5%** for freelancer profiles or independent companies
If you want to find email addresses of independent contractors or freelancers, this tool isn't the right fit.
## Can I get personal email addresses?
No. lobstr.io does **not** provide personal email addresses. These aren't GDPR-compliant — sending marketing emails to personal addresses requires explicit consent.
See [the French CNIL article](https://www.cnil.fr/fr/la-prospection-commerciale-par-courrier-electronique) for details.
## How to use it
Once you've created a Squid, go to **Settings** and switch the **Email Enrichment** toggle to on.
Emails are automatically discovered during scraping:
Email discovery on Sales Navigator is available through the [Sales Navigator Leads Scraper](https://lobstr.io/store/ac4289e5e198409b27c026f189451d02/sales-navigator-leads-scraper).
## How does it work?
Emails aren't publicly visible on LinkedIn or Sales Navigator. lobstr.io reconstructs them in three steps:
lobstr.io runs thousands of scrapers that browse web pages and collect any publicly available company emails. For example, on [this page](https://paris-soleillet.com/2-programmes-daccompagnement/experts-de-confiance-wacano), the email of lobstr.io's founder Sasha Bouloudnine is publicly listed:
Using AI-based pattern matching, lobstr.io figures out the company's email format. For the example above, the pattern is `{first}.{last}@lobstr.io`. Many patterns exist — the most popular ones:
From LinkedIn or Sales Navigator, lobstr.io collects the person's first and last name:
Then it visits the company page and collects the domain:
lobstr.io builds the business email (e.g. `sasha.bouloudnine@lobstr.io`) and sends a verification to confirm it's deliverable.
## What does the email status mean?
Every email in your dataset includes an `email status` column.
It tells you how confident lobstr.io is that the address can actually receive emails. Three possible values:
The email works. Our discovery service confirmed the address is real and active — send with confidence.
The email is valid, but we can't be 100% sure it will receive. This happens with catch-all domains, role emails (like `info@`), or servers that hide info.
The mail server didn't respond in time or blocked our check. We can't confirm whether the address works.
For best results, focus on **Valid** emails. Risky and Unknown addresses can be included in outreach, but they may lower your deliverability rate.
## Will already enriched contacts be enriched again?
**No.** If a contact has already been enriched inside your Squid, lobstr.io will not enrich it again — this saves you from burning credits on the same contact twice.
**Example:** You create a Squid with email enrichment on and scrape 100 leads. lobstr.io enriches 40 of them. If you run the same Squid again, lobstr.io will skip those 40 and only enrich new leads.
"Already enriched" means **already enriched inside that specific Squid**. To enrich the same contacts again, create a new Squid — a new Squid always scrapes fresh and enriches all profiles.
If you previously scraped with email enrichment turned **off**, then turn it **on**, the scraper will go back and enrich the contacts it already scraped.
## Does it work everywhere?
Yes. Email enrichment works for profiles from **all countries worldwide**.
## Related articles
* [Phone Number Enrichment from Sales Navigator Leads](/enrichment/phone-numbers) — add verified phone numbers alongside emails
* [Verified Business Email Collection from Google Maps](/enrichment/emails-google-maps) — email enrichment for Google Maps scrapers
* [How to Download Results](/data/download-results) — download your enriched dataset as CSV
# How lobstr.io finds and collects emails from YouTube channels
Source: https://help.lobstr.io/enrichment/emails-youtube
lobstr.io's YouTube Channel Email Scraper collects email addresses from channel About pages when creators publicly list them.
One of the most common questions: **"Why didn't I find any emails after using the YouTube Channel Email Scraper?"**
After seeing a tool called `YouTube Channel Email Scraper`, you expect a list of emails. But sometimes there's nothing there to collect. Here's why.
## How the YouTube channel email scraper works
lobstr.io checks the **About page** of a YouTube channel and scans the description for an email address.
✅ If an email is found in the channel description, it's collected and added to the output.
That's it — quick and simple. But if there's no email in the description, the scraper won't find one. And that's where the confusion starts.
## Why you didn't find an email
Some YouTube channels don't put their email in the description. Instead, they hide it behind the **View Email Address** button in the Channel Details section.
🚫 The problem: that email is locked behind a login wall — you must be signed in to see it.
Could we add `sync_account` like we do for Facebook, X, and Sales Navigator to collect these hidden emails? We tried — but there's a problem.
Even when you log in, **YouTube only lets you view 10 emails per day per Google account**.
To collect 1,000 emails in a single day, you'd need 100 Google accounts. That limit makes large-scale email collection impossible — which is why the scraper doesn't try to pull emails from the **View Email Address** button.
lobstr.io focuses on **public emails only** to keep things fast, reliable, and hassle-free.
Run the scraper on a large list of channels to maximize your total email yield. Hit rates vary by niche and channel type — business-focused and large creator channels typically list contact emails more often than personal or entertainment channels.
# Phone number enrichment from Sales Navigator leads
Source: https://help.lobstr.io/enrichment/phone-numbers
Enable phone enrichment in the Sales Navigator Leads Scraper to add verified business phone numbers — direct dials and mobile business lines.
lobstr.io can enrich your Sales Navigator leads with **verified business phone numbers**. When you enable phone enrichment, each profile is checked for a valid business number during the scrape.
The service focuses on business contact details. You can find:
* Direct dials.
* Mobile business numbers.
Personal phone numbers are **not** included. This keeps you compliant with GDPR, CCPA, and other privacy regulations — contacting someone on a private line requires their explicit consent.
## How does lobstr.io find these phone numbers?
lobstr.io works with a trusted third-party vendor — **ContactOut** — which maintains a 100M+ phone number database updated hourly. Numbers are collected from public, compliant sources:
* Social networks
* Website crawls
* Market research and public info
* Crowd source and data partners
* EDGAR SEC filings
* Other public business records and datasets
From this pool, only numbers that pass a **three-layer verification process** make it into your output file.
## How accurate is the phone data?
Enriched phone numbers have **99% confidence**. The database updates hourly and each contact passes multiple validation checks before being returned.
Success rate depends on region and industry:
### Coverage by region
| Region | Coverage |
| ------------- | -------- |
| North America | 84% |
| Oceania | 77% |
| Europe | 73% |
| South America | 70% |
| Asia | 55% |
| Africa | 36% |
### Coverage by industry
| Industry | Coverage |
| ---------------- | -------- |
| Sales | 90% |
| Finance | 86% |
| Technology | 85% |
| Health | 53% |
| Other industries | \~75% |
So if you're enriching sales leads in North America, expect over 75% success. But for Health-sector leads in African countries, success drops to around 20%.
## How much does phone enrichment cost?
**1 valid phone number costs 300 credits.** So 1 Sales Navigator lead + a phone number = 301 credits.
Based on lobstr.io's monthly plans, that works out to:
* **\~33 phone numbers for \$20** (Starter)
* **\~332 phone numbers for \$100** (Pro)
* **\~3,322 phone numbers for \$500** (Team)
* **\~6,644 phone numbers for \$1,000** (Business)
**No phone = 0 credits.** You're charged only when a valid phone number is found.
## How to enable phone number enrichment
Toggle the **Mobile Enrichment** option in your **Sales Navigator Leads Scraper** Squid settings.
If you're using the lobstr.io API, add `"mobile_phone": true` as a function parameter:
```json theme={null}
"params": {
"functions": {
"email": false,
"mobile_phone": true
}
}
```
## In which columns do phone numbers appear?
Phone numbers appear in the `MOBILE PHONE` column of your CSV output.
## Will already enriched contacts be enriched again?
**No.** If a contact has already been enriched with a phone number inside a specific Squid, lobstr.io won't enrich it again in that same Squid.
This protects you from spending extra phone credits on profiles you've already paid for. To re-enrich the same contacts, create a new Squid — a new Squid starts from scratch and enriches all profiles again, which uses new credits.
## Does it work worldwide?
Yes, phone enrichment is available for profiles from all countries. Coverage quality varies by region and industry — best results come from North America, Europe, and Oceania, and from Sales, Finance, and Technology industries.
## Can I get personal phone numbers?
No. lobstr.io does **not** provide personal phone numbers. Personal numbers aren't GDPR or CCPA compliant for outreach — contacting someone on a private line requires explicit consent.
lobstr.io only returns business-related numbers: direct dials, work phones, and mobile business numbers.
Enabling both email and phone enrichment in the same Squid gives you the most complete contact record for each lead. Reaching a prospect by both channels significantly increases response rates.
# How to sync third-party accounts for login-wall scraping
Source: https://help.lobstr.io/getting-started/account-sync
Connect LinkedIn, Twitter, Facebook, or Leboncoin accounts to lobstr.io using the browser extension to scrape data behind login walls.
Some data on the web is only accessible after you log in — LinkedIn profiles, Twitter feeds, and Leboncoin listings are common examples. To scrape this data, lobstr.io needs to browse as if it were logged in to your account. Account Sync makes this possible.
lobstr.io never stores your username or password. The browser extension captures only your login cookies, which are used to maintain your session. Your credentials stay private.
## Watch the full walkthrough
## Sync your first account
Install the **lobstr.io Account Sync** extension from the Chrome Web Store:
[Install extension](https://www.lobstr.io/chrome-extension)
The extension is what captures your login cookies and makes them available to lobstr.io.
In Chrome, go to the website you want to connect — for example, [twitter.com](https://twitter.com) or [linkedin.com](https://linkedin.com) — and log in to your account normally.
With the extension installed and you logged in to the third-party site:
1. Go to your [lobstr.io dashboard](https://app.lobstr.io) and log in.
2. Click **Accounts** in the left sidebar.
3. Select the account type you want to sync (e.g., LinkedIn, Twitter).
4. Click **Yes, I want to sync**.
lobstr.io will read your login cookies from the extension and store them securely. Your account is now synced and ready to use.
## Sync multiple accounts
You can connect more than one account of the same type — for example, two LinkedIn accounts — to increase scraping throughput.
### Standard accounts (Twitter, Facebook, etc.)
For most platforms, repeat the sync process for each account:
1. Log in to account 1 → sync → log out from account 1.
2. Log in to account 2 → sync → log out from account 2.
3. Repeat for additional accounts.
### LinkedIn and Leboncoin accounts
For LinkedIn and Leboncoin, logging out normally invalidates your cookies immediately. Clear your site data instead of using the normal logout button.
To switch between LinkedIn or Leboncoin accounts without breaking cookies:
1. Log in to account 1 and sync it.
2. Navigate to `www.linkedin.com` (or `leboncoin.fr`).
3. Open Chrome DevTools (press `F12` or right-click → **Inspect**).
4. Go to the **Application** tab.
5. Click **Storage** in the left panel.
6. Check **"including third-party cookies"**.
7. Click **Clear site data**.
8. Log in to account 2 and sync it.
9. Repeat for any additional accounts.
## Refresh expired cookies
Login cookies don't last forever. When they expire, lobstr.io displays a warning: **"this account needs to be updated"**. You'll need to provide fresh cookies by re-syncing your account.
Make sure you have the lobstr.io extension installed and are logged in to the relevant third-party account, then use one of the two methods below.
### From the accounts section
1. Log in to [lobstr.io](https://app.lobstr.io).
2. Go to the **Accounts** section.
3. Click **Actions** next to the account you want to refresh.
4. Select **Refresh cookies**.
### From a Squid's settings
1. Open a Squid that uses the account you need to refresh.
2. Click the **here** link in the banner, or click the **Settings** icon.
3. Click the **refresh icon** next to your account name.
Once refreshed, the account is active again and your Squids can resume scraping.
## Related articles
* [Scraping Limits to Protect Your Accounts from Bans](/safety/account-bans) — platform-specific rate limits for synced accounts
* [Account Slots](/core-concepts/slots) — how concurrent scraping capacity works with multiple synced accounts
# How to find your API key and use the lobstr.io REST API
Source: https://help.lobstr.io/getting-started/api-key
Locate your lobstr.io API key in account Settings to access the REST API for triggering Squid runs and fetching scraped results programmatically.
Your lobstr.io API key gives you programmatic access to your scraping jobs. You can use it to trigger Squids, check their status, and retrieve results via the [lobstr.io REST API](https://docs.lobstr.io) — without touching the dashboard.
## Find your API key
Log in to your [lobstr.io dashboard](https://app.lobstr.io) and click **Settings**.
On the Settings page, click the **API key** tab.
Click the **Copy** button to copy your API key to the clipboard.
## Use your API key
Pass your API key as a `Token` in the `Authorization` header of every request to the lobstr.io API:
```bash theme={null}
curl -X GET "https://api.lobstr.io/v1/me" -H "Authorization: Token YOUR_API_KEY"
```
Replace `YOUR_API_KEY` with the key you copied from Settings. For the full list of available endpoints, see the [lobstr.io API documentation](https://docs.lobstr.io).
Treat your API key like a password. Do not share it publicly, commit it to version control, or include it in client-side code. If your key is compromised, generate a new one from Settings immediately.
# Create a free lobstr.io account
Source: https://help.lobstr.io/getting-started/sign-up
Sign up for free in less than a minute. No credit card required.
Sign up at [lobstr.io](https://lobstr.io) for free. No credit card required — just an email and a password.
Go to [lobstr.io](https://lobstr.io) and fill in the sign-up form:
1. Enter your email address.
2. Choose a password.
3. Click **Create an account**.
Check your inbox for an email from lobstr.io with the subject **"Activate your account"** and click **Verify Email**.
You'll be redirected to a success page. Click **Start now** to open your dashboard and launch your first scraper.
# How filtering works in the Google Maps Leads Scraper
Source: https://help.lobstr.io/guides/google-maps/filtering
The Google Maps Leads Scraper has two kinds of filter: free accuracy filters that drop irrelevant results, and credit-costing data filters that narrow results by website, phone, email, open/closed, and claimed status.
Google Maps doesn't always return exactly what you search for — you get the wrong business type, listings from the wrong city, or businesses you don't care about. The **Google Maps Leads Scraper** (formerly "Google Maps Search Export") gives you a set of filters to keep only the results you actually want.
Most filtering happens automatically during the run — you don't need to clean your data by hand afterward.
## Why Google Maps results can be inaccurate
When you search for businesses on Google Maps, the results don't always match what you're looking for. Search for plumbers in Alaska and you might get plumbing supply stores; search in one city and get results from another — sometimes another country.
## Two kinds of filter
The Google Maps filters fall into two groups:
* **Accuracy filters (free)** — keep only results that match your search. They drop irrelevant listings *before* you're billed, so you never pay for what they remove.
* **Data filters (cost credits)** — narrow your results by a business attribute (website, phone, email, open/closed, claimed status). They add a small per-row surcharge on the results you keep.
### Accuracy filters (free)
Keeps only businesses within 50 km of your chosen location.
Keeps only businesses that match your search keyword or category.
Keeps only businesses whose name starts with your search query.
### Data filters (cost credits)
Drops businesses marked temporarily or permanently closed.
Keeps businesses with — or without — a website.
Keeps businesses with — or without — a phone number.
Keeps owner-claimed or unclaimed listings.
Keeps only businesses where an email was found.
## How to enable filters
1. Open your Squid and go to the **Settings** tab.
2. Scroll to **Advanced Settings** for Geo Match, Category Match, Exact Name Match, Skip Closed Places, Website Filter, Phone Filter, and Claimed Status Filter.
3. **Only Leads with Emails** is the exception — it sits in the main settings block, next to **Extract Emails from Website**, not in Advanced Settings.
## What filtering costs
Every Google Maps row costs a base of **1 credit**. Accuracy filters add nothing. Data filters add a per-row surcharge — but only on the rows you **keep**, and only when set to something other than their default:
| Filter | Surcharge per kept row |
| ----------------------------------------------------------- | ---------------------- |
| Skip Closed Places | 0.2 |
| Website Filter (`with_website` / `without_website`) | 0.2 |
| Phone Filter (`with_phone` / `without_phone`) | 0.2 |
| Claimed Status Filter (`verified_only` / `unverified_only`) | 0.2 |
| Only Leads with Emails | 1 |
Surcharges **stack**: three data filters on at once adds +0.6 per kept row. Rows dropped by any filter cost **0**, and duplicate results aren't billed twice. Email collection and verification are billed separately — see [Credits](/core-concepts/credits).
The filter surcharges above are the same on every plan. Other costs (email collection and verification, business details, images) can differ on older plans — check the pricing calculator on the [scraper's store page](https://www.lobstr.io/store) for your exact rates.
# How the Category Match filter works in the Google Maps Leads Scraper
Source: https://help.lobstr.io/guides/google-maps/filtering/category-match
Category Match keeps only businesses that match your search keyword or category, using translation and fuzzy matching — so you don't collect or pay for the wrong business type.
Search Google Maps for one type of business and you'll often get another — plumbers turn into plumbing supply stores. The **Category Match** filter keeps only results that actually match what you searched for.
## What Category Match does
Category Match checks that every result matches your search keyword or business category. It supports:
* **Translation matching** — catches matching categories even when Google lists them in a different language.
* **Fuzzy matching** — handles variations and similar category names (e.g. "Plumbing Service" matches "Plumber").
If a business doesn't match your category, it's skipped before it reaches your results.
## When it runs
Category Match runs at the **crawl level**, before results reach your output file. Businesses that don't match are skipped before collection, so they **never count toward your billing**.
## How to enable it
Toggle **Category Match** in your Squid's **Advanced Settings** — see [how to enable filters](/guides/google-maps/filtering#how-to-enable-filters) for the full steps.
## Category Match vs Exact Name Match
Category Match looks at the business **category** and is flexible — it understands related terms and translations. If you want to match on the business **name** (for a specific brand or chain like Peugeot or Starbucks), use [Exact Name Match](/guides/google-maps/filtering/exact-name-match) instead. When both are on, a result has to satisfy both to be kept — and since Category Match runs first, a brand name that isn't a Google business category will be dropped here before Exact Name Match ever sees it. For brand hunts, turn Category Match **off**.
# Claimed Status Filter: target owner-claimed or unclaimed Google Maps listings
Source: https://help.lobstr.io/guides/google-maps/filtering/claimed-status-filter
The Claimed Status Filter narrows your Google Maps Leads Scraper results by owner-claimed status — target claimed businesses, or unclaimed listings for 'claim your business' outreach.
Whether a Google Maps listing has been claimed by its owner tells you a lot about the lead. The **Claimed Status Filter** lets you keep only claimed businesses — or only unclaimed ones, which are a natural target for "claim your business" outreach.
## What it does
The Claimed Status Filter is a dropdown with three values:
| Value | What it returns |
| ----------------- | --------------------------------------- |
| `all` *(default)* | Every listing — no filtering. |
| `verified_only` | Only businesses claimed by their owner. |
| `unverified_only` | Only unclaimed listings. |
### What "claimed" means
Claimed status reflects whether a business's Google listing has been claimed by its owner. Treat it as a strong indicator rather than an official Google verification badge — describe these leads as "claimed by the owner," not "Google-verified."
## Where to find it
The Claimed Status Filter is in your Squid's **Advanced Settings**. It defaults to `all`.
## What it costs
Set to `verified_only` or `unverified_only`, it **adds 0.2 credits per kept row** (on top of the base 1 credit per row). Left at `all`, it's **free**. Rows it drops cost nothing.
## Use cases
* **`unverified_only` → "claim your business" outreach.** Reach owners who haven't set up their Google Business Profile yet.
* **`verified_only` → active, responsive businesses.** Owners who manage their listing are more likely to answer.
## Common mistakes
* **It's an approximation.** Claimed status is a strong signal but not a guaranteed verification, so treat edge cases as approximate.
* **You pay per kept row.** Set to `verified_only` or `unverified_only`, it adds 0.2 credits to every business you keep.
Learn more: [How filtering works](/guides/google-maps/filtering) · [Credits](/core-concepts/credits).
# How Exact Name Match filters Google Maps results by business name
Source: https://help.lobstr.io/guides/google-maps/filtering/exact-name-match
Exact Name Match is an optional Google Maps Leads Scraper filter that keeps only results whose business name contains your search query — ideal for scraping a single brand or chain like Peugeot or Starbucks.
Sometimes you're not after every business in an area — you want one specific **brand or chain**. **Exact Name Match** is an optional filter in the **Google Maps Leads Scraper** that keeps only the results whose business name matches what you searched for, and drops everything else.
It's built for one job: chasing a specific brand (like Peugeot, McDonald's, or Starbucks) without pulling in every unrelated business that happens to appear in the search area.
Exact Name Match is **off by default**. Turn it on only when you're targeting a single brand — it's the wrong tool for broad categories like "all coffee shops."
## Where to find it
Exact Name Match is a simple **on/off toggle** (a checkbox) in your Squid's settings, under the advanced / detail options.
There is **no separate box to type names into**. The filter automatically compares each business name against the text you already entered in the **Category / Search Query** field. Whatever you typed to run the search is also what the names are matched against.
**Example:** If your Category / Search Query is `Peugeot`, turning on Exact Name Match keeps only results whose name contains "Peugeot" and removes everything else.
If your tasks are **Google Maps search URLs** instead of plain keywords, the keyword inside the URL is used as the query. When you're using this filter, stick to keyword tasks or search URLs so there's always a query to match against.
## How the matching works
This is the most important part to understand, because the name is a little misleading.
Exact Name Match keeps a result when your search query appears **anywhere inside the business name**. It does **not** require the name to be exactly equal, and the query does **not** have to be at the beginning of the name.
```mermaid theme={null}
%%{init: {"flowchart": {"htmlLabels": true, "nodeSpacing": 55, "rankSpacing": 70}, "themeVariables": {"fontSize": "16px"}}}%%
flowchart TD
N["Business name
e.g. Garage Citroën Lyon"]
Q["Your search query
e.g. citroen"]
C["Tidy up both sides
ignore case, accents,
punctuation and spacing"]
D{"Does the name contain
your query anywhere?"}
K["Kept"]
X["Dropped"]
N --> C
Q --> C
C --> D
D -->|"yes"| K
D -->|"no"| X
style N fill:#fef3c7,stroke:#d97706,stroke-width:3px,color:#000
style Q fill:#fef3c7,stroke:#d97706,stroke-width:3px,color:#000
style C fill:#eef2ff,stroke:#4f46e5,stroke-width:3px,color:#000
style D fill:#eef2ff,stroke:#4f46e5,stroke-width:3px,color:#000
style K fill:#ecfdf5,stroke:#059669,stroke-width:3px,color:#000
style X fill:#fee4e4,stroke:#c00,stroke-width:3px,color:#000
```
Before comparing, both your search query and the business name are cleaned up so small differences don't get in the way. Matching is:
* **Not case-sensitive** — `peugeot`, `Peugeot`, and `PEUGEOT` are all treated the same.
* **Accent-insensitive** — `cafe` matches `Café`, and `citroen` matches `Citroën` (and the other way around).
* **Punctuation- and spacing-insensitive** — dots, hyphens, apostrophes, `&`, and extra spaces are ignored. So `St-Denis`, `St Denis`, and `StDenis` are all treated as the same thing, and `McDonald's` is treated as `McDonalds`.
Because spacing is ignored, there are **no word boundaries** — the comparison runs over one continuous string. A query can match the middle of a single word, not just the middle of a name.
What it does **not** do:
* It does **not** expand abbreviations. `Saint Denis` will not match `St-Denis`, and `Company` will not match `Co`.
* It does **not** understand related terms, categories, or translations — that's [Category Match](/guides/google-maps/filtering/category-match).
## Contains, not starts with: worked examples
These examples assume the toggle is **on**.
**Search query: `peugeot`**
| Business name | Kept? | Why |
| ------------------- | ----- | -------------------------------------------- |
| Peugeot | ✅ Yes | The name contains "peugeot" |
| Peugeot Lyon Centre | ✅ Yes | Contains "peugeot" |
| Garage Peugeot Bron | ✅ Yes | Contains "peugeot" — position doesn't matter |
| Renault Lyon | ❌ No | Doesn't contain the query |
**Search query: `geot` (partial word)**
| Business name | Kept? | Why |
| ------------------- | ----- | ---------------------------------------------- |
| Peugeot Lyon Centre | ✅ Yes | "geot" appears inside the name — that's enough |
**Search query: `citroen` (accents and casing)**
| Business name | Kept? | Why |
| ------------------- | ----- | ------------------------------------------ |
| Citroën | ✅ Yes | Accent is ignored, so it matches "citroen" |
| Citroën Garage Lyon | ✅ Yes | Contains "citroen" |
| Garage Citroën | ✅ Yes | Contains "citroen" |
**Search query: `mcdonalds` (apostrophes and spacing)**
| Business name | Kept? | Why |
| -------------------------- | ----- | ----------------------------------- |
| McDonald's | ✅ Yes | Apostrophe and capitals are ignored |
| McDonald's To Go — Midtown | ✅ Yes | Punctuation and spacing are ignored |
| Burger King | ❌ No | Doesn't contain the query |
**Abbreviations work one way only**
| Search query | Business name | Kept? | Why |
| ------------ | ------------- | ----- | ------------------------------------------- |
| `co` | Acme Company | ✅ Yes | "co" happens to appear inside "Company" |
| `company` | Acme Co | ❌ No | The query is longer than what's in the name |
**Short queries match more than you expect.** Because the query only has to appear somewhere in the name, a two- or three-letter query will pull in unrelated businesses. Use the full brand name.
**Names written in non-Latin scripts are dropped.** Japanese, Chinese, Cyrillic, Greek, Arabic and similar business names can't be compared, so they're removed while the toggle is on. Letters that have no plain-Latin equivalent are also affected — `Straße` is read as `Strae`, so a query of `strasse` won't match it. If you're scraping a market where names aren't written in Latin characters, leave this filter off.
## Using a single search term
Exact Name Match works with **one search query at a time**. It does **not** support:
* **Multiple names** — you can't enter a list like `peugeot, citroen` and match either one. Your whole query is treated as a single phrase, so only a name that literally contains "Peugeot Citroen" together would match. Neither "Peugeot Lyon" nor "Citroen Lyon" is kept.
* **Excluding names** — there's no way to say "remove any result whose name contains X." The filter can only *keep* matches, not block them. A minus sign doesn't help either: `-peugeot` is read as `peugeot`, so it *keeps* Peugeot results instead of removing them.
If you need several brands, run a **separate crawl for each one**.
## What happens when it's off
When the toggle is **off** (the default), names are not filtered at all — you get every result the search returned, subject to any *other* filters you've set.
## How it works with the Category Match filter
Exact Name Match and the [Category Match filter](/guides/google-maps/filtering/category-match) are **separate settings that work together** — both must pass. Category Match is flexible and understands related terms, translations and categories, while Exact Name Match only looks at the business name.
Category Match runs **first**, and it's **on by default**. That matters when you're chasing a brand: a query like `peugeot` is a brand name, not a business category, so Google's category for those listings ("Car dealer") often doesn't match it — and Category Match drops the result before Exact Name Match ever sees the name.
Hunting a specific brand? Turn **Category Match off** and **Exact Name Match on**. Leaving both on is the most common reason a brand crawl comes back empty.
## When the filter runs
Exact Name Match is applied **after** results are collected, and it's the **last** filter checked. It trims down the results you get, rather than changing how the search itself is performed.
Results dropped by the filter are removed **before** email and phone enrichment and **before** any credits are charged — so filtered-out businesses cost you nothing. You'll see a line in your run log for each one:
```
⚠️ Skipped 'Renault Lyon' — Name does not match query
```
## Tips and common mistakes
**Use it for brands and chains, not generic categories.** It shines for "only Starbucks" but is the wrong tool for "all coffee shops."
* **Use the full brand name.** Partial queries match inside other words and let unrelated businesses through.
* **Turn Category Match off for brand hunts.** It runs first and will drop brand queries that don't look like a business category.
* **Don't expect abbreviations to be understood.** "Saint" vs "St", "and" vs "&", and "Company" vs "Co" are all treated as different.
* **One brand per run.** Comma-separated lists won't work — split them into separate crawls.
* **It matches your search query, not a custom list.** You can't match a name that's different from what you searched for.
## A note on the name
Although it's called **Exact Name Match**, it isn't a strict, character-for-character match: it ignores case, accents, and punctuation, and it accepts any name that *contains* your query anywhere. Think of it as **"name contains my search term"** rather than "name is identical to my search term."
# How the Geo Match filter works in the Google Maps Leads Scraper
Source: https://help.lobstr.io/guides/google-maps/filtering/geo-match
Geo Match keeps only businesses within 50 km of your chosen location, skipping out-of-area results before they reach your output file — so you don't collect or pay for them.
Google Maps often returns businesses from the wrong city — sometimes the wrong country. The **Geo Match** filter fixes this by keeping only results close to the location you searched for.
## What Geo Match does
Geo Match ensures every collected business is **within 50 km of your chosen location**. If a business falls outside that radius, the scraper skips it entirely — it never appears in your output file.
## When it runs
Geo Match runs at the **crawl level**, before results reach your output file. Because out-of-area listings are skipped before collection, they **never count toward your billing**.
## How to enable it
Toggle **Geo Match** in your Squid's **Advanced Settings** — see [how to enable filters](/guides/google-maps/filtering#how-to-enable-filters) for the full steps.
Geo Match works alongside [Category Match](/guides/google-maps/filtering/category-match). You can use either, both, or neither — when both are on, a result has to pass both to be kept.
# Only Leads with Emails: keep only Google Maps results that have an email
Source: https://help.lobstr.io/guides/google-maps/filtering/only-leads-with-emails
Only Leads with Emails drops every Google Maps Leads Scraper result where no email was found, leaving a ready-to-use outreach list. Requires Extract Emails from Website.
If you're scraping Google Maps to build an email outreach list, rows with no email are just cleanup work. **Only Leads with Emails** drops every business where no email was found, so your export is ready to send.
## What it does
Only Leads with Emails keeps a business **only if at least one email address was found** for it, and drops the rest. "Found" means any email at all — it does **not** require the email to be valid or verified.
This filter keys off *any* email that was found. The [Verify emails](/enrichment/emails-google-maps#how-to-verify-collected-emails) toggle does not change which rows survive — a kept row can still turn out to be invalid when verified. Verification is a separate step.
## Prerequisite: Extract Emails from Website
Only Leads with Emails depends entirely on email extraction. It **requires [Extract Emails from Website](/enrichment/emails-google-maps) to be enabled** (that option is on by default).
If you turn on Only Leads with Emails while Extract Emails from Website is **off**, the filter does nothing — no rows are dropped.
## Where to find it
Unlike the other data filters, Only Leads with Emails is **not** in Advanced Settings. It sits in the **main settings block, right next to Extract Emails from Website**. It is **off by default**.
## What it costs
While on, it **adds 1 credit per kept row** — on top of everything else. Because email work is billed separately, a surviving row can carry several charges:
| Line item | Credits |
| ----------------------------------- | ------------------ |
| Base row | 1 |
| Only Leads with Emails surcharge | 1 |
| Email collection (row has an email) | 1 |
| **Row total (no verification)** | **3** |
| Email verification (if enabled) | +2 per valid email |
So a kept row with one valid email costs **3 credits**, or **5** with verification on. Rows dropped for having no email cost **0**.
## Use cases
* **Ready-to-send outreach lists** — no blank-email rows to clean out afterward.
* **Deliverable-only lists** — pair it with Verify emails to keep only rows that have an email that checks out as valid.
## Why did I get zero (or very few) results?
* **Extract Emails from Website is off** — the filter has nothing to work with.
* **Your targets mostly have no website** — many restaurants, salons, and trades don't, so no email can be found and most rows drop.
* **Website Filter is set to `without_website`** — guaranteed empty: no website means no email to find.
* **Sites hide emails behind contact forms** — nothing to extract, so those rows drop.
Learn more: [How filtering works](/guides/google-maps/filtering) · [Emails: Google Maps](/enrichment/emails-google-maps) · [Credits](/core-concepts/credits).
# Phone Filter: keep Google Maps businesses with or without a phone number
Source: https://help.lobstr.io/guides/google-maps/filtering/phone-filter
The Phone Filter narrows your Google Maps Leads Scraper results by phone presence — keep only businesses that have a phone number, or only those that don't.
If you're building a cold-calling or SMS list, a lead with no phone number is useless. The **Phone Filter** narrows your Google Maps results by phone presence.
## What it does
The Phone Filter is a dropdown with three values:
| Value | What it returns |
| ----------------- | ----------------------------------------- |
| `all` *(default)* | Every listing — no filtering. |
| `with_phone` | Only businesses that have a phone number. |
| `without_phone` | Only businesses without a phone number. |
## Where to find it
The Phone Filter is in your Squid's **Advanced Settings**. It defaults to `all`.
## What it costs
Set to `with_phone` or `without_phone`, it **adds 0.2 credits per kept row** (on top of the base 1 credit per row). Left at `all`, it's **free**. Rows it drops cost nothing.
## Use cases
* **Cold-calling and SMS campaigns → `with_phone`.** Only keep leads you can actually dial.
* **Auditing coverage → `without_phone`.** Find listings missing a contact number.
## Common mistakes
* **Some real businesses don't list a phone number** on Google Maps — `with_phone` will exclude them.
* **You pay per kept row.** Set to `with_phone` or `without_phone`, it adds 0.2 credits to every business you keep.
Learn more: [How filtering works](/guides/google-maps/filtering) · [Credits](/core-concepts/credits).
# Skip Closed Places: filter out closed businesses in the Google Maps Leads Scraper
Source: https://help.lobstr.io/guides/google-maps/filtering/skip-closed-places
Skip Closed Places drops any business Google Maps marks as temporarily or permanently closed, so your Google Maps Leads Scraper results only contain places that are still operating.
When you're building an outreach or lead list, businesses that have shut down are dead weight — wasted emails and calls, and stale rows in your CRM. **Skip Closed Places** drops any business that Google Maps marks as closed, so your results only contain places that are still operating.
## What it does
Skip Closed Places removes every business flagged on Google Maps as **temporarily closed** or **permanently closed**. Both statuses are skipped; open businesses (and listings with no closed status) are kept. No other state — such as "moved" — is handled.
## Where to find it
Skip Closed Places is an on/off toggle in your Squid's **Advanced Settings**, alongside the other filters. It is **off by default**.
## What it costs
While the filter is on, it **adds 0.2 credits to each row you keep** — on top of the base 1 credit per row. Closed businesses that get skipped cost **nothing**.
The surcharge is charged per **kept** row, not per row dropped. So turning this on adds 0.2 credits to every *open* business you keep, not to the closed ones it removes.
## Use cases
* **Clean cold-email and cold-call lists** — don't waste sends on businesses that no longer exist.
* **CRM imports** — keep dead listings out of your pipeline from the start.
## Common mistakes
* **Google's closed flag can be stale.** "Temporarily closed" is sometimes left on during holidays, renovations, or seasonal breaks — so a business that's actually trading can be dropped. If that's a concern, leave the filter off.
* **You still pay for the survivors.** Because billing is per kept row, a run with this filter on costs 0.2 more for every open business in your results.
Learn more: [How filtering works](/guides/google-maps/filtering) · [Credits](/core-concepts/credits).
# Website Filter: keep Google Maps businesses with or without a website
Source: https://help.lobstr.io/guides/google-maps/filtering/website-filter
The Website Filter narrows your Google Maps Leads Scraper results by website presence — keep only businesses that have a website, or only those that don't, ideal for web-design and SEO prospecting.
Whether you want prospects who already have a website (so you can find their email) or ones who don't (perfect for web-design and SEO pitches), the **Website Filter** narrows your Google Maps results by website presence.
## What it does
The Website Filter is a dropdown with three values:
| Value | What it returns |
| ----------------- | ------------------------------------ |
| `all` *(default)* | Every listing — no filtering. |
| `with_website` | Only businesses that have a website. |
| `without_website` | Only businesses without a website. |
## Where to find it
The Website Filter is in your Squid's **Advanced Settings**. It defaults to `all`.
## What it costs
Set to `with_website` or `without_website`, it **adds 0.2 credits per kept row** (on top of the base 1 credit per row). Left at `all`, it's **free**. Rows it drops cost nothing.
## Interaction with email extraction
**Email extraction has no effect with `without_website`** — these businesses have no website to scrape, so there's nothing to pull an email from. Don't combine the two: you'd still pay the 0.2 website surcharge while [Extract Emails from Website](/enrichment/emails-google-maps) does nothing.
## Use cases
* **Web-design, SEO, and hosting agencies → `without_website`.** Find local businesses with no online presence to pitch.
* **Email outreach → `with_website`.** Only businesses with a website can yield an email via Extract Emails from Website, so pair `with_website` with email extraction for a higher hit rate.
## Common mistakes
* **`with_website` only filters what Google returns** — it doesn't discover extra listings, it just removes the ones without a website.
* **You pay per kept row.** Set to `with_website` or `without_website`, it adds 0.2 credits to every business you keep.
Learn more: [How filtering works](/guides/google-maps/filtering) · [Emails: Google Maps](/enrichment/emails-google-maps) · [Credits](/core-concepts/credits).
# Scrape all businesses in a country with Google Maps search export
Source: https://help.lobstr.io/guides/google-maps/scrape-country
Collect business listings across an entire country using the lobstr.io Google Maps URL Generator or the Use Params feature — in a few clicks.
One of the most common questions: **"Can I scrape all businesses in a country using the Google Maps scraper?"**
**Short answer: yes.** You can do it in two ways:
1. Using the Google Maps URL Generator tool
2. Using the task parameters (`Use params`)
## Method 1: use the Google Maps URL generator
The easiest way to scrape businesses from an entire country.
Go to the [Google Maps URL Generator](https://www.lobstr.io/tools/google-maps-search-urls-generator) and follow three steps:
1. Enter your keyword.
2. Select the country you want to target.
3. Click **Generate**.
Download the list of URLs, then upload it directly into the Google Maps Search Export scraper.
The scraper goes through each URL and collects all listings it finds. Perfect when you want to cast a wide net and pull business data from a whole country in one go.
## Method 2: use the task parameters
If you want **more control** over where you're scraping, this method lets you target specific areas using structured parameters. Enable the **Use params** feature.
You must specify a category to add tasks. The scraper doesn't support collecting data from all categories yet.
Available parameters:
* **Category** — the type of business you're searching for.
* **Country** — the country where you want to scrape.
* **Admin 1** — first-level administrative division (state or province).
* **Admin 2** — second-level administrative division (e.g. county).
* **City** — the city you want to target.
These follow a natural location hierarchy: **Country → State (Admin 1) → County (Admin 2) → City**.
### Collect all business listings from an entire country
1. Go to **Add tasks** and turn on **Use params**.
2. Select your targeted business category (e.g. Restaurants).
3. Choose your targeted country (e.g. United States).
4. Click **Add tasks**.
### Collect all business listings from a state or county
Fill in **Admin 1** and **Admin 2** to narrow down to a state or county.
For example, to get all Restaurants from Illinois, enter "illinois" in **Admin 1**. To target a specific county like Cook County within Illinois, enter the county name in **Admin 2**.
### Collect all business listings from a city or zip code
To narrow further to a specific city, click the `x` next to "All cities" and type the city name.
For example, collect all Restaurants from Chicago — or more specifically from zip codes 60601 to 60605.
## How accurate are these results?
Google Maps isn't perfect — sometimes it shows listings from the wrong category, wrong location, or both.
lobstr.io is scraping what Google gives it, so if Google's a little confused, the data will reflect that. To help, every result includes a **Match Filter** column telling you how closely each listing matches your search or parameters.
Learn more: [Google Maps filtering: geo & category match](/guides/google-maps/filtering).
# Personalize messages in Leboncoin auto message sender
Source: https://help.lobstr.io/guides/leboncoin/personalize-messages
Use the pseudo and title variables in Leboncoin Auto Message Sender to automatically insert each seller's nickname and listing title into your messages.
Some users notice the `title` and `pseudo` options in the message box of the [Leboncoin Auto Message Sender](https://www.lobstr.io/store/leboncoin-auto-message-sender) and get confused about what they're for.
They look like placeholders or settings, so it's easy to miss their purpose. In reality, these options let you **personalize your message for each person you're contacting on Leboncoin**.
## How to send personalized messages
You can personalize messages inside lobstr.io's no-code app using two smart variables:
* `pseudo` — the **username/nickname** shown on the Leboncoin profile of the person you're messaging.
* `title` — the **title line of their listing** on Leboncoin.
### How does it work?
When you add Leboncoin listing URLs to your task, the tool automatically pulls two things from each listing:
* The **title** of the ad.
* The **pseudo** (nickname) of the seller.
When you write your message, include `#pseudo#` and `#title#` in the text — or click the **title** and **pseudo** buttons. These placeholders are replaced with the actual nickname and listing title for each seller when the message is sent.
### Example
Your message template:
> Hi #pseudo#, is the item "#title#" still available?
If the seller's pseudo is "Sofiane" and their listing title is "Bel appartement à sous louer entièrement", they receive:
> Hi Sofiane, is the item "Bel appartement à sous louer entièrement" still available?
Here's how the message looks inside the Leboncoin interface:
## Related articles
* [Account Bans & Rate Limits — Leboncoin messaging](/safety/account-bans#what-are-the-limits-of-a-leboncoin-account) — batch and daily messaging limits to keep your account safe.
# How to get readable LinkedIn profile URLs with Get Beautiful Profile URL
Source: https://help.lobstr.io/guides/sales-navigator/beautiful-profile-url
Turn on Get Beautiful Profile URL so your Sales Navigator Leads Scraper returns linkedin.com/in/john-doe instead of the coded profile URL, and learn about its 3,000-per-day limit.
By default, the Sales Navigator Leads Scraper returns each lead's **coded** profile URL — a long internal identifier like `https://www.linkedin.com/in/ACwAAA...`. **Get Beautiful Profile URL** returns the clean, human-readable form instead: `https://www.linkedin.com/in/john-doe`.
This setting is specific to the **Sales Navigator Leads Scraper**.
Both forms open the same profile. Coded URLs aren't broken or lower quality — they're just unreadable. Turn this on when a human is going to look at the URLs, or when you're handing the file to a tool or teammate that expects the readable form.
## How to turn it on
The toggle is **off by default**.
Go to your Sales Navigator Leads Scraper Squid, open the **Settings** tab, and scroll to **Advanced Settings**.
Switch on the **Get Beautiful Profile URL** toggle. The change applies to the **next** launch.
The readable URL replaces the coded one in the `LINKEDIN PROFILE URL` column. No extra column is added.
## Does it cost credits?
**No.** Get Beautiful Profile URL is free — it consumes no credits at all. What it does consume is a **daily allowance**, and a small amount of time.
The speed cost is minor: lobstr.io fetches readable URLs for a whole page of leads in one request, not one request per lead, so turning this on adds very little to a run's duration. It's nothing like the per-profile cost of [Get Profile Details](/guides/sales-navigator/get-profile-details).
## Daily limit: 3,000 profiles per account
You can collect readable URLs for **3,000 profiles per day per synced account**. When an account reaches it, the run **pauses** with the [`limit_exceeded`](/core-concepts/run-stop-reasons#limit_exceeded) stop reason and resumes automatically about 24 hours later. The run log names the limit:
```
⏸️ Run pause triggered by "Account's limit has exceeded." for "" (beautiful_links limit reached the value of 3000).
```
Everything collected before the pause is saved and downloadable.
The allowance frees up on a **rolling 24-hour window** starting from the first profile that account touched, not at midnight.
The limit is **per synced account**, so more accounts means a higher effective ceiling — three accounts gives you 9,000 readable URLs a day. If one account hits its limit and the Squid has others available, the run switches over and keeps going rather than pausing. See [Sync multiple accounts](/getting-started/account-sync#sync-multiple-accounts).
## Skip Collected Leads doesn't save this allowance
Worth knowing if you run the two together. [Skip Collected Leads](/guides/sales-navigator/skip-collected-leads) saves you credits by not re-scraping leads you already have — but it does **not** save your readable-URL allowance.
Readable URLs are fetched for an entire page of leads before any skipping happens, so leads that get skipped still count against your 3,000 for the day. If you're running large repeat scrapes with both settings on, the daily allowance is spent on the whole page, not just the new leads in it.
## Some rows can still come back coded
Even with the setting on, a small number of rows may keep the coded URL. That happens when LinkedIn doesn't return a readable URL for a particular profile — some profiles simply don't have one exposed.
This isn't an error and nothing is missing: those URLs still open the correct profile. If you're filtering or matching on URL format afterwards, allow for both forms appearing in the same file.
## Don't use it together with Get Profile Details
If [Get Profile Details](/guides/sales-navigator/get-profile-details) is on, **leave this off**. Get Profile Details already returns the readable profile URL as part of what it collects, and it doesn't touch this setting's 3,000-per-day allowance.
Running both means spending extra requests and burning a separate daily allowance to produce a URL you'd get anyway.
## Related
* [Get Profile Details](/guides/sales-navigator/get-profile-details) — adds extra profile fields, and includes readable URLs
* [Skip Collected Leads](/guides/sales-navigator/skip-collected-leads) — return only leads you haven't collected yet
* [Run stop reasons](/core-concepts/run-stop-reasons#limit_exceeded) — what happens when a daily allowance runs out
# How Sales Navigator filtering and data cleansing work
Source: https://help.lobstr.io/guides/sales-navigator/filtering
The Sales Navigator Leads Scraper verifies every lead against your industry, company size, and seniority filters, and automatically cleans up messy profile names.
LinkedIn Sales Navigator lets you filter by industry, company size, and seniority — but the leads it returns don't always honor those filters, and profile names are often cluttered with emojis and credentials. The **Sales Navigator Leads Scraper** handles both: it verifies every lead against your filters and cleans up names automatically, at the crawling level.
Filtering happens automatically. You don't need to clean your data manually after a run — lobstr.io handles it during the scrape itself.
## Why LinkedIn results can be inaccurate
LinkedIn Sales Navigator lets you filter by industry, company size, and seniority level. However, the leads it returns don't always honor those filters precisely.
For example:
* You search the "Software" industry but get someone from "Construction".
* You select company size 51–200 but see leads from companies with only 10 employees.
* You pick seniority "Manager and above" but get someone with an entry-level role.
## How lobstr.io filters Sales Navigator results
The Sales Navigator Leads Scraper **verifies** each lead against the filters you applied, including:
* **Industry**
* **Company size (employee headcount)**
* **Seniority level**
lobstr.io adds two extra columns to your export file:
| Column | What it contains |
| ----------------- | ------------------------------------------------------------------------------------------------------------ |
| `MATCH FILTERS` | `true` if the lead matches all your filters; `false` if one or more don't match |
| `NO MATCH REASON` | The specific reason for a mismatch — e.g. `no_industry_match`, `no_company_size_match`, `no_seniority_match` |
If you didn't use a particular filter in your search, that filter is skipped during the check.
lobstr.io does **not** remove non-matching leads — it only flags them, so you keep full control of your data.
### Saved searches
Filtering works the same way with saved searches. If your Sales Navigator account is connected, leads scraped from a saved search are also checked against your selected filters.
### How to use the filter columns in Excel or Google Sheets
1. Open your export in Excel or Google Sheets.
2. Click the `MATCH FILTERS` column header and apply a filter.
3. Select `true` to see only fully matched leads, or `false` to review mismatches.
4. Filter the `NO MATCH REASON` column to view specific mismatch types.
### Improving Sales Navigator search accuracy
You can reduce mismatched results by using **Boolean filters** instead of dropdown filters. Boolean filters let you type exactly what you want, which gives more precise results in your Sales Navigator search — better input means better data in your export.
👉 Read: [How to use LinkedIn Sales Navigator](https://www.lobstr.io/blog/how-to-use-linkedin-sales-navigator)
## Data Cleansing
Many LinkedIn profiles include emojis, special characters, credentials, and extra punctuation in the name field.
For example:
* "🚀 Thomas Vidaurre"
* "Harvey Castro, MD, MBA"
* "Erkeda DeRouen, MD, CPHRM ✨"
These look normal on LinkedIn but cause problems in CRMs, enrichment tools, and spreadsheet formulas. The Sales Navigator Leads Scraper automatically removes everything that isn't part of a person's real name — emojis, decorative symbols, Unicode characters, extra punctuation, and professional suffixes.
The result is a clean **Full Name**, which lobstr.io splits into a clean **First Name** and **Last Name**.
### Do I need to enable it?
No. Data Cleansing is always active for every Sales Navigator lead — no toggle, no setting, nothing to configure.
### Does it cost credits?
No. Data Cleansing does not use any additional credits. You only pay for the leads you collect and for any email or phone enrichment you enable.
### Does it remove middle names?
No. Middle names stay exactly as they are.
### What about ALL CAPS names?
If a profile name is written in uppercase, Data Cleansing automatically fixes the casing.
# How to collect extra profile fields with Get Profile Details in Sales Navigator
Source: https://help.lobstr.io/guides/sales-navigator/get-profile-details
Turn on Get Profile Details to add websites, Twitter URL, open-to-work status and structured work history to every lead your Sales Navigator Leads Scraper collects.
A Sales Navigator search listing only returns a limited set of fields per lead. **Get Profile Details** visits each lead's profile individually and pulls back extra information the listing doesn't include — websites, Twitter URL, open-to-work status, and their full structured work and education history.
This setting is specific to the **Sales Navigator Leads Scraper**.
## How to turn it on
The toggle is **off by default**.
Go to your Sales Navigator Leads Scraper Squid, open the **Settings** tab, and scroll to **Advanced Settings**.
Switch on the **Get Profile Details** toggle. The change applies to the **next** launch.
## What you get
Seven extra columns are filled in your export:
| Column | What's in it |
| -------------------------- | --------------------------------------------------------------- |
| `WEBSITES` | Websites listed on the profile, comma-separated |
| `TWITTER URL` | The lead's Twitter/X profile, if they've linked one |
| `OPEN TO WORK` | `TRUE` or `FALSE` — whether the lead has the open-to-work badge |
| `CURRENT ROLE DESCRIPTION` | The free-text description of their current position |
| `POSITIONS STRUCTURED` | Full work history as a JSON array |
| `EDUCATIONS STRUCTURED` | Full education history as a JSON array |
| `BANNER URL` | The profile's banner image |
`LINKEDIN PROFILE URL` also changes: with Get Profile Details on, it comes back as the readable form (`linkedin.com/in/john-doe`) rather than the coded one.
When LinkedIn has nothing for a field, the cell is simply **empty** — not `N/A` or `null`. The only exception is `OPEN TO WORK`, which is always either `TRUE` or `FALSE`.
`POSITIONS STRUCTURED` and `EDUCATIONS STRUCTURED` contain **JSON**, not plain text. Excel and Google Sheets will show them as one long string in a single cell. If you need those fields broken out into columns, parse the JSON after export rather than trying to split the cell.
## Does it cost credits?
Yes — **1 extra credit per profile**, on top of the credit already charged for scraping the lead. So a lead collected with Get Profile Details on costs **2 credits** in total instead of 1.
* **1 credit** to scrape the lead from the search listing.
* **1 credit** to fetch that lead's profile details.
On legacy plans both charges are 5, so 10 credits per lead. Check the [Sales Navigator Leads Scraper pricing calculator](https://www.lobstr.io/pricing?product=sales-navigator-leads-scraper#simulator) for an estimate based on your own inputs.
**The details credit is charged per profile visited, whether or not any details come back.** This is different from [email enrichment](/enrichment/emails-sales-navigator#what-happens-if-no-email-is-found), where you're only charged when an email is actually found. If a lead's profile has no websites, no Twitter and no description, you still pay the credit for looking.
## It makes runs considerably slower
Get Profile Details visits every lead's profile as a separate request, and deliberately waits about **5 seconds between profiles** to stay within safe browsing behaviour. That pause, more than the extra request itself, is what slows things down.
In practice, 1,000 leads means roughly **80 minutes of waiting alone**, before any scraping time. Budget for it — and if you only need the extra fields for part of your list, consider running Get Profile Details on a smaller, more targeted Squid instead of your whole search.
## Daily limit: 1,000 profiles per account
LinkedIn caps how many profiles one Sales Navigator account can visit per day, so Get Profile Details is limited to **1,000 profiles per day per synced account**. This is LinkedIn's limit, not lobstr.io's — see [LinkedIn's daily limits](https://www.lobstr.io/blog/linkedin-limits) for the full picture.
When an account reaches it, the run **pauses** with the [`limit_exceeded`](/core-concepts/run-stop-reasons#limit_exceeded) stop reason and resumes automatically about 24 hours later. Your run log shows which limit was hit:
```
⏸️ Run pause triggered by "Account's limit has exceeded." for "" (profiles limit reached the value of 1000).
```
Everything collected before the pause is saved and downloadable — you don't lose the run.
The allowance frees up on a **rolling 24-hour window** that starts from the first profile that account visited, not at midnight. If your account's first profile visit was at 3pm, the allowance resets at 3pm the next day.
The limit is **per synced account**, so syncing more accounts raises your effective daily ceiling — two accounts means 2,000 profiles a day. If a Squid has several accounts linked and one hits its limit, the run switches to another available account and keeps going instead of pausing. See [Sync multiple accounts](/getting-started/account-sync#sync-multiple-accounts).
## Turn off Get Beautiful Profile URL when using this
If you have [Get Beautiful Profile URL](/guides/sales-navigator/beautiful-profile-url) switched on as well, **turn it off**. Get Profile Details already returns the readable profile URL as part of what it fetches, so the second setting adds nothing — it just spends extra requests and eats into its own separate 3,000-per-day allowance for a value you're getting anyway.
## Related
* [Get Beautiful Profile URL](/guides/sales-navigator/beautiful-profile-url) — readable profile URLs without the per-profile cost
* [Email discovery](/enrichment/emails-sales-navigator) and [phone enrichment](/enrichment/phone-numbers) — other per-lead enrichments, billed only on success
* [Credits](/core-concepts/credits) — how credit consumption works across a run
# How to scrape only new leads with Skip Collected Leads in Sales Navigator
Source: https://help.lobstr.io/guides/sales-navigator/skip-collected-leads
Turn on Skip Collected Leads so each run of your Sales Navigator Leads Scraper returns only the leads it hasn't already collected.
By default, every run of a Squid re-processes its full task list and returns every matching lead — including ones you already collected in earlier runs. **Skip Collected Leads** changes that: when it's on, each run skips any lead this Squid has already scraped, so you only get **new** results.
This setting is specific to the **Sales Navigator Leads Scraper**.
## How to turn it on
The toggle is **off by default** — turn it on when you want repeat runs to return only fresh leads.
Go to your Sales Navigator Leads Scraper Squid, open the **Settings** tab, and scroll to **Advanced Settings**.
Switch on the **Skip Collected Leads** toggle. The change applies to the **next** launch.
## What counts as "already collected"
Two things define whether a lead is skipped:
* **Scope is per-Squid, not per-account.** A lead is only skipped if *this* Squid collected it in one of its own previous runs. If a **different** Squid scraped the same LinkedIn person — even under the same synced account — that lead is **not** skipped here. Each Squid keeps its own "collected" record.
* **Leads are matched by LinkedIn's member ID.** A lead is identified by LinkedIn's internal numeric member ID, not by the profile URL or display name. So a lead is still recognized as already-collected even if the person later changes their vanity URL or renames their profile.
## The skip memory doesn't expire with your downloads
This is the important part. Your **downloadable results** are kept for a limited time — 7 days on the free plan, 28 days on paid plans — and then the export files are removed from the dashboard. See [Download your results](/data/download-results) for how retention works.
**Skip Collected Leads does not depend on those export files.** The "already collected" memory lives in the Squid's stored result records, which are separate from the downloadable exports. So when your downloads age out and disappear from the dashboard, the skipped leads **do not** become scrapable again — the Squid still remembers them.
Emptying a Squid's tasks does **not** reset the skip memory. **Empty tasks** clears the Squid's input list (the URLs it processes); the collected-leads record is stored separately and is left untouched.
## Watch out for the 2,500-result cap
Sales Navigator returns at most **2,500 results per search** (100 pages × 25). Once your Squid has collected all 2,500 results for a given search, a run with Skip Collected Leads on may return **nothing new** — there are simply no unseen leads left behind that search until the search itself changes (new filters, a different query, or newly-added matching profiles).
To reach leads **beyond** the 2,500-per-search cap, turn on [Split search](/guides/sales-navigator/split-search) as well. The two settings work together: Split Search widens how many leads a search can reach, and Skip Collected Leads keeps each run limited to the new ones.
## Does it cost credits?
No. Skip Collected Leads adds **no extra charge**. Skipped leads aren't re-scraped, so you're never billed twice for a lead this Squid already collected.
# How to scrape beyond the 2,500-result limit with Split Search in Sales Navigator
Source: https://help.lobstr.io/guides/sales-navigator/split-search
Turn on Split Search so your Sales Navigator Leads Scraper automatically breaks a large search into facet sub-searches and collects leads beyond the 2,500-result limit.
Sales Navigator only ever shows **2,500 results per search** — 100 pages of 25 profiles. No matter how many leads actually match your filters, you can't page past that ceiling. See [scraping limits](/safety/account-bans#how-many-leads-can-you-scrape-per-day-from-sales-navigator) for how this fits with LinkedIn's daily search limits.
**Split Search** works around that cap. When a search has more than 2,500 results, it automatically breaks the search into smaller **facet sub-searches** — each one under 2,500 — and scrapes them all, so the crawler can reach leads it otherwise couldn't.
This setting is specific to the **Sales Navigator Leads Scraper**.
## How to turn it on
Go to your Sales Navigator Leads Scraper Squid, open the **Settings** tab, and scroll to **Advanced Settings**.
Switch on the **Split Search (beat the 2,500 cap)** toggle. The change applies to the **next** launch.
Once it's on, splitting happens **automatically** — only when a search actually exceeds 2,500 results. Smaller searches run normally and are untouched.
## How the split works
Split Search picks **one** filter dimension and divides your search along it. It does **not** combine dimensions or split recursively — it's a single split into one sub-search per value of the chosen dimension.
It tries dimensions **smallest-first**, and uses the first one that (a) isn't already a filter in your search and (b) has enough distinct values to cover the result count:
| Order | Dimension | Distinct values |
| ----- | --------- | --------------- |
| 1 | Seniority | 10 |
| 2 | Function | 26 |
| 3 | Industry | 146 |
1. Estimate how many buckets are needed — roughly the total result count divided by \~2,000 (a margin below the 2,500 ceiling).
2. Walk the order above and pick the first dimension that isn't already used as a filter in your search **and** has enough distinct values to cover what's needed.
3. Split into one sub-search per value of that single dimension, up to a maximum of **95 sub-searches**.
## Limits and edge cases
Split Search reaches most large searches, but it isn't unlimited:
* **Works best up to \~50,000 results.** Very large or heavily skewed searches may still miss some leads.
* **No recursion.** If an individual sub-search *still* exceeds 2,500 results, it is **not** split again. That bucket is paged up to the 2,500 cap and anything beyond it is silently missed. This is the main reason a very skewed search can leave leads uncollected.
* **Fallback dimension.** If no single dimension has enough distinct values, it falls back to the largest unused dimension (Industry) and uses it anyway.
* **Nothing to split by.** If all three dimensions are already used as filters in your query, Split Search does nothing — there's no unused facet left to divide on.
## What Split Search applies to
Split Search only engages on a **regular people-search URL** (a query-based Sales Navigator search). It works by injecting a facet filter into the query itself, which it can't do to a saved reference or a static list — so it **excludes**:
* Saved searches
* Recent searches
* Shared searches
* Lead lists
For those, scraping is still capped at 2,500 results per search.
## What you'll see
Splitting happens **behind the scenes** — you won't see extra tasks or extra runs. Every sub-search runs inside the same search task, and all the leads land under the same task and run.
The only visible signal is a single line in the run log:
```
🪓 Splitting search into N sub-searches to reach beyond the 2,500 cap.
```
The split plan is saved across pause/resume, so it survives an interrupted run.
## Does it respect limits and cost extra?
* **It respects your safety limits.** Split Search still obeys the daily search and ban-safety limits described in [scraping limits](/safety/account-bans) — it doesn't push your account past them.
* **No surcharge for splitting.** There's no extra credit cost for the split itself. You're charged the normal per-lead rate only for the leads you actually collect — the same as any other run.
# How to resume a Sales Navigator scrape from a specific page with Start Page
Source: https://help.lobstr.io/guides/sales-navigator/start-page
Start Page tells your Sales Navigator Leads Scraper which page to begin from, so you can pick up where a previous scrape stopped. Designed for Squids with a single task URL.
**Start Page** sets the page number a run begins from, skipping everything before it. If you previously scraped a search through page 10, setting Start Page to `11` starts the next run at page 11.
This setting is specific to the **Sales Navigator Leads Scraper**.
**Start Page is designed for a Squid with a single task URL, and it needs to be used deliberately.** It applies to every task in the Squid and it never resets on its own — so on a Squid with several URLs, or on a schedule, it will skip pages you didn't intend to skip. Both behaviours are explained below.
## Consider Skip Collected Leads instead
For the most common goal — "don't give me leads I already have" — [Skip Collected Leads](/guides/sales-navigator/skip-collected-leads) is the safer tool, and usually the right one.
The difference matters:
| | How it decides what to skip |
| ------------------------ | ---------------------------------------------------------------------------------------------------------------- |
| **Skip Collected Leads** | Matches each lead against LinkedIn's member ID. Only skips leads this Squid genuinely collected before. |
| **Start Page** | Skips by **position** in the results. Assumes page 11 today contains the same leads page 11 contained last time. |
Sales Navigator result ordering isn't stable. A lead sitting on page 15 last week can be on page 8 this week, which means Start Page can skip past leads you never actually collected. Skip Collected Leads can't make that mistake.
Reach for Start Page when you specifically need to resume from a page offset — for example after a run you deliberately stopped partway — rather than as a general de-duplication strategy.
## How to set it
Go to your Sales Navigator Leads Scraper Squid, open the **Settings** tab, and scroll to **Advanced Settings**.
Set **Start Page** to the page you want to begin from. Page numbering starts at **1**, so `1` means the first page and is the same as leaving it unset.
Each page holds **25 leads**, so the page number maps directly onto lead position:
| Start Page | First lead collected |
| ---------- | -------------------- |
| `1` | Lead 1 |
| `11` | Lead 251 |
| `41` | Lead 1,001 |
| `100` | Lead 2,476 |
Start Page also **overrides any page number already in your task URL**. If your task URL points at page 5 and Start Page is set to 20, the run starts at page 20.
## It applies to the whole Squid
Start Page is a Squid-level setting, not a per-task one. Every task URL in the Squid starts from that same page number.
So a Squid holding 10 search URLs with Start Page set to `11` skips the first 10 pages of **all ten** searches — up to 2,500 leads you never see, with nothing in the interface warning you.
Only use Start Page on a Squid that holds **one task URL**. If you need to resume several searches from different offsets, put each one in its own Squid.
## It doesn't reset after a run
Start Page stays set until you change it. It isn't consumed by a run and it doesn't step forward automatically — a Squid with Start Page `11` begins at page 11 on every future launch.
**Don't use Start Page on a scheduled Squid.** A Squid scheduled to run daily with Start Page `11` will skip its first 250 leads every single day, forever. Clear the field back to `1` once you've collected what you needed.
## Don't combine it with Split Search
Leave Start Page unset when [Split Search](/guides/sales-navigator/split-search) is on. The two settings work on different dimensions of a search and combining them produces results you won't be able to predict.
If you need to reach past the 2,500-result cap, use Split Search **on its own**.
## It can't get you past the 2,500-result cap
Start Page moves *where* you start, not *how far* you can reach. Sales Navigator serves at most 100 pages of 25 results — **2,500 leads per search** — and that ceiling is absolute. Starting at page 90 gets you pages 90 to 100, not 90 to 190.
To collect beyond 2,500 results for a single search, [Split Search](/guides/sales-navigator/split-search) is the only setting that does it — it breaks the search into smaller sub-searches that each sit under the cap.
## If you set it past the last page
Nothing breaks, but you get nothing back. The run finishes immediately and the log reads:
```
✅ 0 results scraped.
```
That success tick is misleading here — it means "there was nothing left to collect from page N onward," not "your search returned no matches." If you see it, check your Start Page value against how many pages the search actually has: a search with 400 results only has 16 pages, so a Start Page of 20 returns nothing.
## Does it cost credits?
**No.** Start Page consumes no credits and adds no charge. Skipped pages are never scraped, so you're not billed for them.
## Related
* [Skip Collected Leads](/guides/sales-navigator/skip-collected-leads) — the safer way to avoid re-collecting leads
* [Split Search](/guides/sales-navigator/split-search) — the only way past the 2,500-result cap
* [Tasks](/core-concepts/tasks) — how a Squid's task list is processed on every run
# Why your run pauses with a 'Too Many Requests' error
Source: https://help.lobstr.io/guides/sales-navigator/too-many-requests
What the 'Too Many Requests' / 'account is being rate limited' message means in the Sales Navigator Leads Scraper, why LinkedIn triggers it, and how lobstr.io auto-pauses and resumes your run.
If a run in the **Sales Navigator Leads Scraper** pauses with a **"Too Many Requests"** message — sometimes phrased as **your account is being rate limited** — it means LinkedIn / Sales Navigator has temporarily limited how many requests your account can make.
These two phrases refer to the same thing. There isn't a separate "rate limited" error — both mean LinkedIn has asked us to slow down on your account for a while.
This shows up in the [Runs table](/core-concepts/runs) as the [`account_too_many_requests`](/core-concepts/run-stop-reasons#account-related-stops) stop reason. It does **not** count against a scraper's [uptime score](/safety/scraper-status) — it's a platform limit, not the tool breaking.
## Why it happens
LinkedIn sets its own limits on how much activity a Sales Navigator account can do in a given period. When an account sends a large number of requests in a short window — for example, scraping many search pages, profiles, or companies quickly — LinkedIn responds by temporarily limiting that account.
A few important things to know:
* **It's tied to your account, not to us.** The limit is applied by LinkedIn to your Sales Navigator seat, based on your account's activity.
* **It's temporary.** It's not a block or a ban — it's a cooldown that lifts on its own.
* **It usually resets daily.** LinkedIn's limits typically refresh on a daily cycle.
This is different from lobstr.io's own built-in safety caps (200 searches / 5,000 leads per day per account). Those exist specifically to keep you *under* LinkedIn's limits — see [Account bans & limits](/safety/account-bans#how-many-leads-can-you-scrape-per-day-from-sales-navigator).
## What happens when it's triggered
When this limit is reached, lobstr.io handles it for you automatically:
The run is **paused, not cancelled or failed.** Everything already collected is kept, and the run stays in place ready to continue.
A message lets you know the run was paused because of too many requests, along with the time it's scheduled to resume.
lobstr.io automatically relaunches the run once the limit period has passed — generally shortly after **midnight UTC**, when LinkedIn's daily limit resets. You don't need to do anything.
## What should you do?
In most cases, **no action is needed** — the run will resume by itself once LinkedIn's limit resets.
To reduce how often this happens, you can:
* **Lower the volume or speed of your runs** so your account makes fewer requests in a short time. Reducing the Squid's [slots](/core-concepts/slots) lowers how many requests go out at once.
* **Spread activity across time** rather than running very large jobs all at once — a gentler [schedule](/core-concepts/scheduling) keeps the load steady instead of bursting.
* **Avoid using the same Sales Navigator account heavily in multiple places at the same time** — for example, browsing LinkedIn manually, or running another tool, while a large run is active.
If you regularly scrape large volumes, connect and use **multiple Sales Navigator accounts** so the load is shared. Each account has its own independent limit, so spreading work across several accounts is the most reliable way to avoid hitting the cap. See [Split search](/guides/sales-navigator/split-search) for going beyond the per-search ceiling.
## Still stuck?
If a run keeps pausing on "Too Many Requests" even at low volume, ping us on [Crisp chat](https://go.crisp.chat/chat/embed/?website_id=45b5fabf-a2d0-441c-b3de-2d517bdeeac9) or email `contact@lobstr.io` with the **Run ID** — that's everything we need to take a look.
# Scraping limits to protect your accounts from bans
Source: https://help.lobstr.io/safety/account-bans
lobstr.io enforces built-in rate limits for LinkedIn, Leboncoin, Twitter, and Facebook scrapers to keep your accounts safe from bans.
Many users ask whether lobstr.io scrapers can get their accounts banned.
**The short answer: no.** lobstr.io has built-in hard limits for certain scrapers and imposes usage safeguards across the board — not to slow you down, but to keep your accounts alive and scraping safely for the long haul. These limits apply mainly to scrapers that require account synchronization.
You can sync 4 types of accounts with lobstr.io:
* Sales Navigator
* Leboncoin
* X (formerly Twitter)
* Facebook
## How many leads can you scrape per day from Sales Navigator?
Sales Navigator shows **100 pages of 25 profiles**. Each page counts as 1 search.
Because a single search tops out at 100 pages of 25, it returns at most **2,500 results** — no matter how many leads actually match. To collect leads beyond that per-search ceiling, see [Split search](/guides/sales-navigator/split-search).
LinkedIn allows [6,000 searches per month](https://www.lobstr.io/blog/linkedin-limits#linkedin-searches-limit) — i.e. **200 searches per day**.
That's why the Sales Navigator Leads Scraper can do a maximum of 200 searches per day. **You can collect up to 5,000 leads per day from a single Sales Navigator account** and safely reach 100% of this capacity without worrying about bans.
**If you're using the same Sales Navigator account on another tool**, reduce lobstr.io's daily lead limit to avoid hitting the cap. Go to **Accounts → Actions → Edit limits**.
Make sure the other tool also respects LinkedIn's daily limits. If both tools combined exceed the allowed limit, your account could get banned.
To bypass the per-account cap, connect and use multiple Sales Navigator accounts with lobstr.io. Each account has its own independent 200-search limit.
## What are the limits of a Leboncoin account?
lobstr.io offers 2 types of Leboncoin automations:
1. Scraping listings data
2. Automated messages
### Listings
**There are no hard limits on scraping listings data.** You don't even need to sync your Leboncoin account to use **Leboncoin Listings Search Export**.
But lobstr.io adds calculated pauses in the Listings and Phone Search Export to mimic human browsing:
* \~1 minute per 35 listings
* \~1 minute per phone number
This slows things down slightly but keeps your Leboncoin account safe.
### Messaging
There **is** a hard limit on sending messages.
Two types of limits apply to the Leboncoin Auto Message Sender:
* **Batch limit** — up to 8 messages per batch, with a 2-hour cooldown between batches.
* **Daily limit** — **up to 30 messages in any rolling 24-hour window.** Each message you send occupies one of the 30 slots for exactly 24 hours, then that slot frees up on its own. There's no fixed daily reset: once all 30 slots are in use, sending pauses, and it resumes gradually as your earliest messages pass the 24-hour mark and release their slots.
Both limits are **per account, not per run**. The 30-message window is shared across every run, Squid, or session that uses the same synced account — every send counts toward the same per-account total.
#### Example timeline
| Time | What happens | Messages in trailing 24h | Status |
| ------------- | --------------------------------------- | ------------------------ | ----------------------------------------------- |
| **Mon 08:00** | Batch 1 — 8 messages sent | 8 | Active |
| **Mon 10:00** | Batch 2 — 8 messages sent | 16 | Active |
| **Mon 12:00** | Batch 3 — 8 messages sent | 24 | Active |
| **Mon 14:00** | Batch 4 — 6 messages sent (cap reached) | 30 | Paused — all 30 slots in use |
| **Tue 08:00** | Batch 1's messages turn 24h old | 22 | Active again — 8 slots freed |
| **Tue 10:00** | Batch 2's messages age out | continues | Sending keeps resuming as each message ages out |
Because the window rolls, there's no single hard reset to wait for — capacity comes back continuously. Exactly 24 hours after each message, its slot frees up again, so an account that hit the cap can usually resume sending in small bursts well before a full day has passed.
To check how many messages an account has sent in the last 24 hours:
1. Go to [Accounts](https://app.lobstr.io/dashboard/accounts) in the left sidebar.
2. Click **Actions** next to the account.
3. Select **Account usage**.
A pop-up opens with two sections:
* **Messages** — the account's daily limit, messages sent in the last 24 hours, and messages still available.
* **Run History** — every recent run that used this account, with how many messages each one sent and when. This is where you can see the per-account (not per-run) behavior at work: every send from any run counts toward the same rolling 24-hour total.
If you use the same account on another service, edit these limits from **Accounts → Actions → Edit limits**.
Running at 50% of the maximum gives an extra safety margin — recommended for newer accounts or if you're also using another messaging tool.
## What are X (Twitter) data scraping limits?
**There's no hard limit on scraping X posts or profiles.** You won't see an **Edit limits** option when you sync your X account.
However, X itself enforces rate limits and may respond with a "Too Many Requests" error when it detects high activity. lobstr.io **automatically pauses the scraper for 1 hour** whenever this error is detected, to avoid triggering platform-level blocks or temporary bans.
You don't need to sync an account to use **Twitter Profiles Scraper** — this limit doesn't apply when scraping profiles.
## What are the limits on scraping Facebook pages?
Similar to X, **there's no hard limit on Facebook Pages Search Export**. To keep your Facebook account safe, lobstr.io adds small pauses during scraping — e.g. a few seconds between each page collected from search results. This avoids triggering Facebook's security systems.
## How many accounts can you sync with lobstr.io?
Very common question.
**You can sync as many accounts as you want.** lobstr.io doesn't limit the number of accounts you can connect. Here's the guide to [sync multiple accounts](/getting-started/account-sync#sync-multiple-accounts).
But there's a limit on how many accounts you can use **at the same time**: your plan includes a set number of slots, and you can sync only 1 account per slot.
Current slot allowances: **Starter = 2, Pro = 10, Team = 50.** So on a Team plan you can have 50 active slots — 50 accounts at once. Learn more: [how slots are calculated](/core-concepts/slots).
# How proxies work for your synced accounts
Source: https://help.lobstr.io/safety/account-proxies
When you sync a login-based account like LinkedIn or Sales Navigator, lobstr.io automatically routes it through a residential proxy in the country you connected from — no setup and no proxy of your own required.
When you connect a login-based account — for example LinkedIn or Sales Navigator — a common question is how lobstr.io handles proxies, and whether your account's activity will suddenly look like it's coming from a different country than where you normally sign in.
**Short answer:** lobstr.io automatically assigns a residential proxy in the country you connected from, and keeps your account's activity in that country. You don't need to configure anything, and you don't need to bring your own proxy.
This is different from how proxies work for scrapers that don't need an account (Google Maps, Google Search, and similar), which run through a general rotating proxy pool. For that, see [IP protection](/safety/ip-protection).
## How a proxy is assigned to your account
When you sync an account with the [lobstr.io add-on](/getting-started/account-sync), lobstr.io captures three things:
* Your **login cookies** — so it can browse as you (never your password).
* Your **browser headers**.
* The **country you're connecting from**.
It then routes all activity for that account through a **residential proxy located in that same country**.
```mermaid theme={null}
%%{init: {"flowchart": {"htmlLabels": true, "nodeSpacing": 55, "rankSpacing": 70}, "themeVariables": {"fontSize": "16px"}}}%%
flowchart LR
U["You connect from Poland
sync your account"]
A["lobstr.io add-on
captures cookies + headers + country (PL)"]
P["Residential proxy
located in Poland"]
T["LinkedIn / Sales Navigator"]
U -->|"1 — sync"| A
A -->|"2 — match country"| P
P -->|"3 — all activity"| T
style U fill:#fee4e4,stroke:#c00,stroke-width:3px,color:#000
style A fill:#eef2ff,stroke:#4f46e5,stroke-width:3px,color:#000
style P fill:#ecfdf5,stroke:#059669,stroke-width:3px,color:#000
style T fill:#fef3c7,stroke:#d97706,stroke-width:3px,color:#000
```
The whole process is automatic. There's no proxy field to fill in — syncing the account is all it takes.
## How the country is chosen
* The country comes from **where you connect when you sync** the account — your actual connection at that moment.
* It is **not** taken from your profile's language or region settings.
* Because it follows your connection, the simplest way to keep a specific country is to **connect the way you normally access the account.** For example, if you normally reach LinkedIn through a Polish connection, sync from that same connection and lobstr.io will match you to a Poland-based residential proxy.
The country is auto-detected from your connection. There's no manual country picker — lobstr.io mirrors where you connected from rather than letting you set an arbitrary country.
## Can I use my own proxy?
**No — and you don't need to.** lobstr.io manages the proxy for you, matched to your account's country automatically. There's no option to plug in your own dedicated proxy, and there's no extra charge for the one lobstr.io assigns — it's included in every plan.
## Keeping your account consistent and safe
A country-matched residential proxy is only part of how lobstr.io protects synced accounts. A few safeguards work alongside it:
* **Consistent country.** Your account's activity stays in the country you connected from, so there's no unexpected country hopping between your normal logins and lobstr.io's activity.
* **Stable session identity.** Your connected session details — cookies and headers — are stored securely and reused across runs, so your account presents the same identity over time.
* **Human-like pacing.** lobstr.io spaces activity out with calculated pauses instead of firing requests back-to-back. See [account bans](/safety/account-bans) for the exact per-platform limits.
* **Automatic protection on limits.** If a platform signals that an account is being used too intensively, lobstr.io pauses activity instead of pushing through — for example, the X scraper auto-pauses for an hour on a "Too Many Requests" response.
## Summary
| Question | Answer |
| ---------------------------------------------- | -------------------------------------------------------------- |
| Is a proxy assigned when I connect an account? | Yes — automatically, with no setup needed. |
| What kind of proxy is it? | A residential proxy located in the country you connected from. |
| How is the country decided? | From your connection at the time you sync the account. |
| Can I manually pin a different country? | No — the country follows where you connect from. |
| Can I use my own proxy? | No — lobstr.io manages the proxy for you. |
| Does it cost extra? | No — it's included in every plan. |
## Related articles
* [Account sync](/getting-started/account-sync) — how to connect LinkedIn, Sales Navigator, and other login-based accounts
* [IP protection](/safety/ip-protection) — how your personal IP is kept out of every scrape
* [Account bans](/safety/account-bans) — the per-platform rate limits that keep synced accounts safe
# lobstr.io account security: password, email, and deletion
Source: https://help.lobstr.io/safety/account-security
Update your lobstr.io password while logged in, reset a forgotten one by email, request an email address change, or permanently delete your account.
If you need to update your login credentials, reset your password, or delete your account — here's how to handle each scenario.
lobstr.io never stores your third-party username or password for LinkedIn, Twitter, Facebook, or Leboncoin. When you sync an account, the browser extension captures only your login cookies to maintain your session.
## How to change your password (while logged in)
If you're logged in and just want to update your password:
1. Go to **Settings**.
2. Click **Change password**.
3. Enter your current password and your new password.
4. Hit **Save**.
Your password will be updated instantly.
Make sure your new password is strong and unique. A password manager is strongly recommended.
## Forgot your password?
If you can't log in at all, don't panic — you can reset your password directly from the login page, no support ticket needed.
* Click [Forgot your password?](https://app.lobstr.io/auth/forgot-password) on the lobstr.io login page.
* Enter the email address you used to create your account.
* Check your inbox for a password reset email.
* Click the link in the email and set a new password.
The password reset email usually arrives instantly, but may occasionally take a few minutes. If you don't see it, check your spam or promotions folder.
## How to change or reset your email
Unlike passwords, you **can't reset or change your email address on your own**. That option has been intentionally turned off in your lobstr.io dashboard for security reasons.
So if you don't remember which email you signed up with (or no longer have access to it):
1. Open the Live Chat widget (bottom right corner of the site).
2. Let the support team know you've forgotten your email or lost access to it.
3. You'll go through a quick verification process.
4. Once verified, support helps you regain access and update your email if needed.
You can't change your email yourself from the dashboard. To update it, contact support through Live Chat — they'll do it safely.
## How to delete your account permanently
If you're sure you want to permanently delete your lobstr.io account:
1. Log in to your lobstr.io account.
2. Go to **Settings → Account Info**.
3. Scroll to the bottom and click **Delete Account**.
4. Confirm your decision when prompted.
🚨 **This action is permanent.** Once deleted:
* All your tasks, Squids, scheduled runs, and exports will be gone.
* Your account and login credentials will be deactivated.
* This action cannot be undone.
If you just want to pause activity or take a break, consider [downgrading to the free plan](/billing/manage-subscription#pause-your-account) instead.
# IP protection: your network is never exposed in lobstr.io
Source: https://help.lobstr.io/safety/ip-protection
lobstr.io runs all scrapers on its own cloud servers using dedicated proxy infrastructure — your personal IP address is never used or exposed.
A lot of users worry about this. You want to scrape Google, LinkedIn, Twitter, or some other platform using lobstr.io, but you're concerned your personal IP might get flagged or permanently banned.
**The good news: no. Your personal IP address is never involved.** lobstr.io is fully cloud-based — all scrapers run from lobstr.io's servers using its proxy system. Your network is never exposed to the websites being scraped.
## How lobstr.io protects your IP from getting banned
Two mechanisms do the work:
1. Cloud Infrastructure
2. Rotating Proxies
### Cloud infrastructure
All scrapers run from lobstr.io's cloud systems. When you start a scraping task, it does **not** run on your computer. Your IP address is never used to send requests to Google, Facebook, or anyone else.
The flow looks like this:
```mermaid theme={null}
%%{init: {"flowchart": {"htmlLabels": true, "nodeSpacing": 60, "rankSpacing": 80}, "themeVariables": {"fontSize": "18px"}}}%%
flowchart TD
U["Your device
your personal IP"]
L["lobstr.io cloud
lobstr.io server IPs"]
P["Rotating proxy pool
thousands of IPs"]
T["Target website
Google, LinkedIn, etc."]
U -->|"1 — Launch Squid"| L
L -->|"2 — Route through proxies"| P
P -->|"3 — Scrape request"| T
T -->|"4 — Response"| P
P -->|"5 — Response"| L
L -->|"6 — Deliver results"| U
style U fill:#fee4e4,stroke:#c00,stroke-width:3px,color:#000
style L fill:#eef2ff,stroke:#4f46e5,stroke-width:3px,color:#000
style P fill:#ecfdf5,stroke:#059669,stroke-width:3px,color:#000
style T fill:#fef3c7,stroke:#d97706,stroke-width:3px,color:#000
```
The only traffic that ever leaves your device is the **command** to start the scrape (steps 1 and 6). The actual requests to Google, LinkedIn, or any target site come from lobstr.io's proxy pool — not from your IP. Your personal IP stays untouched.
You can launch a scraper, close the window, or even turn off your computer and come back later to view the collected data.
### Rotating proxies
lobstr.io has a pool of rotating proxies that spreads requests across multiple IPs — like having a bunch of different "virtual" connections. This helps avoid bans and rate limits, distributing traffic in a way that looks natural and safe to the target platform.
```mermaid theme={null}
%%{init: {"flowchart": {"htmlLabels": true, "nodeSpacing": 50, "rankSpacing": 60}, "themeVariables": {"fontSize": "16px"}}}%%
flowchart LR
S["lobstr.io scraper"]
P1["Proxy IP #1"]
P2["Proxy IP #2"]
P3["Proxy IP #3"]
P4["Proxy IP #4"]
P5["Proxy IP #N"]
T["Target website
Google, LinkedIn, etc."]
S -->|"request 1"| P1 --> T
S -->|"request 2"| P2 --> T
S -->|"request 3"| P3 --> T
S -->|"request 4"| P4 --> T
S -->|"request N"| P5 --> T
style S fill:#eef2ff,stroke:#4f46e5,stroke-width:3px,color:#000
style T fill:#fef3c7,stroke:#d97706,stroke-width:3px,color:#000
style P1 fill:#ecfdf5,stroke:#059669,stroke-width:2px,color:#000
style P2 fill:#ecfdf5,stroke:#059669,stroke-width:2px,color:#000
style P3 fill:#ecfdf5,stroke:#059669,stroke-width:2px,color:#000
style P4 fill:#ecfdf5,stroke:#059669,stroke-width:2px,color:#000
style P5 fill:#ecfdf5,stroke:#059669,stroke-width:2px,color:#000
```
Each request goes out through a **different proxy IP** from the pool. From the target site's perspective, the traffic looks like it's coming from many unrelated visitors — not one bot hammering the same IP.
## Will my account get banned if I sync it and use it with lobstr.io?
Some scrapers need a logged-in account to access certain data — Twitter, Facebook Pages, Sales Navigator, Leboncoin.
**Why do we need your account?** To interact with the platform as you and collect data. lobstr.io doesn't use fake accounts — that goes against most platforms' terms of service and is considered fraud.
**Will your account get banned?** Not if you respect the rate limits. lobstr.io has built-in limits for each account to keep you safe from bans or restrictions.
Learn more: [What are the limits to avoid account bans?](/safety/account-bans)
## Do I have to pay extra to avoid IP bans?
**No.** There's no extra charge for the proxy system or any of these protective features. lobstr.io's pricing is completely transparent — you pay exactly what you see on the pricing page.
No add-ons, no extra charges. Everything is included in your subscription plan.
# How we measure scraper status and uptime
Source: https://help.lobstr.io/safety/scraper-status
How lobstr.io calculates the live reliability shown on every scraper's store page — hourly canary runs, the daily color tiers, the 90-day uptime score, and the paused state.
Every scraper on the [lobstr.io store](https://www.lobstr.io/store) shows a live reliability block: a big uptime percentage, a 90-day timeline with one colored bar per day, and a short status line. It's the panel that says **"Built to run."**
This page explains exactly how that number is measured — because a reliability claim is only worth something if you can see how it's calculated.
The block sits on every scraper's store page (look for the **`#status`** anchor, e.g. `lobstr.io/store/google-maps-leads-scraper#status`). The **How we measure →** link under it brings you here.
## What the block shows
| Element | What it is |
| ------------------- | --------------------------------------------------------------- |
| **Big percentage** | The scraper's overall success rate across the **last 90 days**. |
| **90-day timeline** | One bar per day, color-coded by that day's health. |
| **Legend** | Operational, Degraded, Down — the three live states. |
| **Status line** | "Tracked from hourly canary runs plus real user activity." |
When a scraper is healthy, the block reads **Built to run.** with a pulsing **Live** dot. The headline number is the one to trust — it's computed from every real run, not a marketing figure.
## Where the data comes from
Two sources feed the score, pooled together for each day:
1. **Hourly canary runs.** lobstr.io runs every public scraper on a fixed hourly schedule against the **live source**, around the clock — roughly 24 checks a day. This is the heartbeat that proves the scraper still works even when no customer is using it that hour.
2. **Real user activity.** Every finished run of that scraper by real customers also counts toward the day's numbers.
Because the canary hits the *actual* website hour after hour, the score reflects the scraper genuinely working in production — not a cached or synthetic metric.
## When a run counts as successful
A run counts as successful unless **the scraper itself errored**. That's the only thing held against a scraper's uptime.
Crucially, these do **not** count as failures, because they aren't the tool breaking:
* a run **you aborted** on purpose,
* a run that **paused** because a synced account needed re-syncing, hit a platform limit, or ran out of credits,
* a run stopped for a **plan or billing** reason.
Only a genuine technical error (run status `Error`) lowers the score. For the full list of reasons a run can stop — and which are errors versus normal stops — see [Run stop reasons](/core-concepts/run-stop-reasons).
This is deliberate. If aborting your own run or letting an account expire dinged the scraper's score, the number would measure *your* usage, not the scraper's reliability. We only count the scraper breaking.
## What each color means
Each day's bar is colored by the share of that day's runs that succeeded:
| Color | Status | Threshold |
| ------ | --------------- | --------------------------------------- |
| Green | **Operational** | 90% or more of the day's runs succeeded |
| Orange | **Degraded** | 50% to 89% succeeded |
| Red | **Down** | fewer than 50% succeeded |
| Gray | **No data** | no runs that day (scraper inactive) |
Hover any bar to see the exact figure for that day — `X% runs successful` and the date.
## The 90-day score
The big percentage is simply:
```
total successful runs ÷ total runs, over the last 90 days
```
It's a single number across the whole window, refreshed continuously — the page re-aggregates the scraper's recent runs each time it loads, on top of a daily roll-up, so it's always current.
A scraper that was added recently may show **fewer than 90 days** of history at first. The window fills in over time as daily reliability is recorded.
## When a scraper is paused
If a scraper hits a technical issue we can't fix on the spot, we take it **offline** rather than let it return broken or partial data. The block then changes:
* the title becomes **Temporarily paused.**
* the percentage becomes a grayed-out **—**
* the bars are ghosted, and the legend shows a single **Paused** state
We don't run the hourly canary while a scraper is paused — that's why there's no data to show for that stretch. It comes back online once it's fixed.
We pause scrapers that don't meet our reliability bar on purpose. We don't ship broken tools.
## Still have questions?
If a scraper's status looks wrong, or you want detail on a specific run, ping us on [Crisp chat](https://go.crisp.chat/chat/embed/?website_id=45b5fabf-a2d0-441c-b3de-2d517bdeeac9) or email `contact@lobstr.io`.