Expanded Limits, Across all tiers - Our Gift to you! Learn more →

AlterLab
SearchResearchPricingComparePlaygroundBlogDocsChangelog
    AlterLabAlterLab
    PricingComparePlaygroundBlogDocsChangelog
    IntroductionQuickstartInstallationYour First Request
    REST APICrawl APIMap APISearch APIResearch APINewSERP APINewExtract APIAIJob PollingDomain StatsNewGeocode APINewNews APIBatch ResultsNewAPI KeysSessions APINewEnterprise APIEnterprise
    AccountAutoAI VisibilityAutoAlertsAutoAuthAutoBillingAutoCrawlAutoExtractAutoIntegrationsAutoKeysAutoMapAutoMonitorsAutoOrganizationsAutoResearch SchedulesAutoRunsAutoSchedulesAutoScrapeAutoSearchAutoSearch SchedulesAutoSessionsAutoUser WebhooksAutoV1 EndpointsAutoAffiliatesAutoAgentAutoAgent OnboardingAutoAgent VisibilityAutoAnalyticsAutoApprovalsAutoArtifactsAutoAttributionAutoB2BAutoBatchAutoBeta FeaturesAutoBlogAutoBuyerAutoChatAutoConnectionsAutoConnectorsAutoContact ListsAutoCreatorAutoCross SellAutoDashboardAutoDefaultsAutoDomainsAutoEmail PreferencesAutoFcAutoHandsAutoHealthAutoJobsAutoListingsAutoMaintenanceAutoNewsAutoOauthAutoOauth GrantsAutoPage InspectAutoPlatformAutoPresetsAutoPricingAutoPrivacyAutoPublicAutoPublic PagesAutoReferralAutoReferralsAutoReportsAutoResearchAutoSecretsAutoSerpAutoSSOAutoStorefrontsAutoSupportAutoTemplatesAutoToolsAutoTrackAutoUsageAutoUsage TagsAutoUserAutoWorkflowsAutoWorkspacesAutoWebhooksAuto
    OverviewPythonNode.jsCLI
    Guides OverviewJavaScript RenderingBrowser ActionsOutput FormatsPDF & OCRCachingWebhooksJSON Schema FilteringWebSocket Real-TimeBring Your Own ProxyProSticky SessionsProAuthenticated ScrapingNewHTTP Methods & BodiesNewStructured ExtractionAIWeb SearchAgent and RAG GroundingResearch JobsAgent RunsSite MappingWeb CrawlingBatch ScrapingSchedulerData MarketplaceSelling DataAgent OnboardingEmbeddingsKeyword IdeasAI VisibilityWorkflowsChange DetectionCloud Storage ExportSpend LimitsOrganizations & TeamsScrape TemplatesCustom ConnectorsSecretsContact ListsPlatform Sub-AccountsReferrals & AffiliatesAlerts & NotificationsExtraction ProfilesAIBYOK ExtractionAIOAuth2 Machine-to-MachineSupport & TicketsUnsupported Targets
    Tutorials OverviewStructured ExtractionAIE-commerce ScrapingNews MonitoringPrice MonitoringMulti-Page CrawlingMonitoring DashboardAI Agent / MCPMCPAI Research AgentAISite CrawlingData Pipeline to Cloud
    E-commerceLead GenerationChange MonitoringRAG & AI PipelinesAIResearch
    Reference OverviewPricingRate LimitsReliabilityReliability ContractError CodesChangelogVersioning
    Migrations OverviewFrom FirecrawlFrom ApifyFrom ScrapingBee / ScraperAPIFrom Crawl4AIFrom SpiderSearch to SERPFirecrawl v0 API ReferenceLegacy
    OverviewMCP ServerAIn8n NodeLangChainAICrewAIAILlamaIndexAISupabaseChrome ExtensionSoon
    PlaygroundPricingStatus

    Up to 5,000 free requests · No credit card

    Reference

    Reliability Contract

    Three behaviours you can rely on when a request fails, when a batch runs against one domain, and when a domain is paused.

    One Retry on a Failed Browser Request

    When you force browser rendering (mode: "js", render_js: true or a forced tier) and the page comes back as a verification screen or times out, the error carries a hint that names the setting to change. The platform can apply that hint for you once: it retries the same job a single time through the standard route, with a fresh identity.

    • The retry happens at most once per job and reuses the job id.
    • You are billed only for a page that was delivered, at the price of the route that returned it. A failed retry costs nothing.
    • It never moves a request to a more expensive route than the one you asked for.

    Gradual rollout

    This behaviour is being turned on gradually, starting with measurement only. Until it is active for your account, a failed request returns the original error and hint, and you can follow the hint yourself.

    Pacing

    Batches are paced from what the platform observes, not from fixed per-site numbers. For each domain in your batch, the number of jobs in flight starts at your plan's limit. If challenges or timeouts rise among your own jobs on that domain, the window shrinks; when they clear, it grows back. It never drops below 1, and a healthy domain is never slowed.

    To cap a batch yourself, set max_in_flight_per_domain. It can only lower the window, never raise it. The live value for each domain is returned in the batch status as dispatch_windows:

    JSON
    {
      "dispatch_windows": [
        { "domain": "example.com", "window": 8, "limit": 25, "in_flight": 8, "throttled": true }
      ]
    }

    Domain Pauses and Reopen Time

    After repeated failures on a domain, automatic attempts on it pause for a short time. A pause caused only by requests where you forced the strategy, from a single account, does not pause the domain for other accounts. Every request rejected by a pause returns the same fields, on single scrapes (HTTP 422) and on each batch item (error_detail), and no credits are charged:

    FieldMeaning
    codeAlways domain_circuit_open
    retryableWhether the request is worth sending again
    retry_after_secondsSeconds until the domain reopens
    reopen_atThe same moment as an ISO 8601 timestamp
    scopetransient for a short pause, degraded when the domain has paused repeatedly and is under review
    trip_countHow many times the domain has paused
    next_action{ "type": "wait", "retry_after": <seconds> }
    JSON
    {
      "message": "Domain 'example.com' is temporarily unavailable — too many consecutive scrape failures. Retry after 90s. No credits were charged.",
      "code": "domain_circuit_open",
      "retryable": true,
      "retry_after_seconds": 90,
      "reopen_at": "2026-11-10T12:31:30+00:00",
      "scope": "transient",
      "trip_count": 1,
      "next_action": { "type": "wait", "retry_after": 90 }
    }

    What to do

    Wait until reopen_at and resubmit. A degraded scope is not a short wait; check back later. See Error Codes for the other error responses.
    Rate LimitsReliability Contract
    Last updated: June 2026

    On this page