+
    Vi>                     n   R t ^ RIt^ RIHtHtHtHtHtHtH	t	 ^RI
HtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t* ^RI+H,t, ^RI-H.t. ^RI/H0t1 ^RI/H2t3 ^RI/H4t5 ^R	I/H6t7 ^R
I/H8t9 ^RI/H4t: ^RI/H;t< ^RI/H=t> ^RI/H?t@ ^RI/HAtB ^RICHDtD  ! R R4      tER# )zs
Main Firecrawl v2 API client.

This module provides the main client class that orchestrates all v2 functionality.
N)OptionalListDictAnyCallableUnionLiteral) ClientConfigScrapeOptionsDocumentSearchRequest
SearchDataSourceOptionCategoryOptionCrawlRequestCrawlResponseCrawlJobCrawlParamsRequest	PDFParserCrawlParamsDataWebhookConfigAgentWebhookConfigCrawlErrorsResponseActiveCrawlsResponse
MapOptionsMapDataFormatOption
WaitActionScreenshotActionClickActionWriteActionPressActionScrollActionScrapeActionExecuteJavascriptAction	PDFActionLocationPaginationConfigAgentOptions)
HttpClient)FirecrawlError)scrape)crawl)batch)search)map)usage)extract)agent)browserWatcherc            8         a  ] tR t^9t o Rt]V 3R lR l4       tRV 3R lR lltRRRRR	RR
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR/V 3R lR lltRRRRR RRR!R/V 3R" lR# lllt	V 3R$ lR% lt
V 3R& lR' ltRRRRR RRR!R/V 3R( lR) llltV 3R* lR+ ltR,RR-RR.RR/RRRR0RRRR1RRR/	V 3R2 lR3 lltRRR4RR5RR6RR7RR8RR9R:R.RR;R:R<R:R=R:R>R:R?RR@RRARR1RRBR:RCRDRER:RF^RRRGRRR/V 3RH lRI lltRRR4RR5RR6RR7RR8RR9R:R.RR;R:R<R:R=R:R>R:R?RR@RRARR1RRBR:RCRDRER:RR/V 3RJ lRK lltRRGR/V 3RL lRM llltRGR/V 3RN lRO lltV 3RP lRQ ltV 3RR lRS ltV 3RT lRU ltRVRRWRR9RR.RR7RRRRRRR/V 3RX lRY lltV 3RZ lR[ ltV 3R\ lR] ltRRRR^RR_RR<RR`RRaRR1RR0RRRRbR/
V 3Rc lRd llltRRRR^RR_RR<RR`RRaRR1RR0RRF^RRRRRbR/V 3Re lRf llltRRRRR	RR
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRARRgRR0RR@RRERRRRhR/V 3Ri lRj lltRV 3Rk lRl lltRGR/V 3Rm lRn lltV 3Ro lRp ltV 3Rq lRr ltV 3Rs lRt lt RR^RRRRuRRvRRwRRAR/V 3Rx lRy lllt!RR^RRRRF^RRRuRRvRRwRRAR/V 3Rz lR{ lllt"V 3R| lR} lt#V 3R~ lR lt$R t%R t&R t'RV 3R lR llt(RV 3R lR llt)R t*RRRRRRRR/V 3R lR llt+RRRR/V 3R lR llt,V 3R lR lt-RR/V 3R lR llt.RRRF^RR/V 3R lR llt/RRRRR	RR
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRARRgRR0RR@RRERRRRhRRF^RR/V 3R lR llt0Rt1V t2R# )FirecrawlClientzp
Main Firecrawl v2 API client.

This client provides a clean, modular interface to all Firecrawl functionality.
c                &   < V ^8  d   QhRS[ RS[/# )   urlreturnstrbool)format__classdict__s   "R/home/ubuntu/hermes-agent/venv/lib/python3.14/site-packages/firecrawl/v2/client.py__annotate__FirecrawlClient.__annotate__A   s     2 2s 2t 2    c                (    R V P                  4       9   # )zapi.firecrawl.dev)lower)r:   s   &rA   _is_cloud_service!FirecrawlClient._is_cloud_service@   s    "ciik11rD   Nc          
      X   < V ^8  d   QhRS[ S[,          RS[RS[ S[,          RS[RS[/# )r9   api_keyapi_urltimeoutmax_retriesbackoff_factor)r   r=   floatint)r?   r@   s   "rA   rB   rC   D   sE     )
 )
#)
 )
 %	)

 )
 )
rD   c                    Vf   \         P                  ! R4      pV P                  V4      '       d   V'       g   \        R4      h\	        VVVVVR7      V n        \        VVVVVR7      V n        R# )av  
Initialize the Firecrawl client.

Args:
    api_key: Firecrawl API key (or set FIRECRAWL_API_KEY env var)
    api_url: Base URL for the Firecrawl API
    timeout: Request timeout in seconds
    max_retries: Maximum number of retries for failed requests
    backoff_factor: Exponential backoff factor for retries (e.g. 0.5 means wait 0.5s, then 1s, then 2s between retries)
NFIRECRAWL_API_KEYzlAPI key is required for the cloud API. Set FIRECRAWL_API_KEY environment variable or pass api_key parameter.)rJ   rK   rL   rM   rN   )rL   rM   rN   )osgetenvrG   
ValueErrorr	   configr)   http_client)selfrJ   rK   rL   rM   rN   s   &&&&&&rA   __init__FirecrawlClient.__init__D   sx    $ ?ii 34G!!'**7- 
 ##)
 &#)
rD   formatsheadersinclude_tagsexclude_tagsonly_main_contentrL   wait_formobileparsersactionslocationskip_tls_verificationremove_base64_images	fast_modeuse_mock	block_adsproxymax_agestore_in_cacheprofileintegrationc          .        < V ^8  d   QhRS[ RS[S[R,          ,          RS[S[S[ S[ 3,          ,          RS[S[S[ ,          ,          RS[S[S[ ,          ,          RS[S[,          RS[S[,          R	S[S[,          R
S[S[,          RS[S[S[S[ ,          S[S[S[ S[3,          ,          3,          ,          RS[S[S[R,          ,          ,          RS[R,          RS[S[,          RS[S[,          RS[S[,          RS[S[ ,          RS[S[,          RS[S[ ,          RS[S[,          RS[S[,          RS[S[S[ S[3,          ,          RS[S[ ,          RS[	/# )r9   r:   r[   r   r\   r]   r^   r_   rL   r`   ra   rb   rc   rd   r&   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   r;   	r   r   r   r    r!   r"   r#   r$   r%   )
r=   r   r   r   r>   rP   r   r   r   r   )r?   r@   s   "rA   rB   rC   o   s    ND NDND $~./	ND
 $sCx.)ND tCy)ND tCy)ND $D>ND #ND 3-ND ND %S	4c9n0E+F FGHND $u  &{   |  }  ~ND :&ND  (~ND  'tn!ND" D>#ND$ 3-%ND& D>'ND( })ND* #+ND, !-ND. $sCx.)/ND0 c]1ND2 
3NDrD   c                  \         ;QJ d*    R W#WEWgWWWWVVVVVVV3 4       F  '       g   K   RM	  RM! R W#WEWgWWWWVVVVVVV3 4       4      '       d|   \        R/ \        R/ RVbRVbRVbRVbRVbR	VbR
VbRV	bRV
bRVbRVbRVbRVbRVbRVbRVbRVbRVbRVbRVbRVb P                  4        UUu/ uF  w  ppVf   K  VVbK  	  uppB MRp\        P
                  ! V P                  VV4      # u uppi )a  
Scrape a single URL and return the document.
Args:
    url: URL to scrape
    formats: List of formats to scrape
    headers: Dictionary of headers to use
    include_tags: List of tags to include
    exclude_tags: List of tags to exclude
    only_main_content: Whether to only scrape the main content
    timeout: Timeout in milliseconds
    wait_for: Wait for a specific element to be present
    mobile: Whether to use mobile mode
    parsers: List of parsers to use
    actions: List of actions to perform
    location: Location to scrape
    skip_tls_verification: Whether to skip TLS verification
    remove_base64_images: Whether to remove base64 images
    fast_mode: Whether to use fast mode
    use_mock: Whether to use mock mode
    block_ads: Whether to block ads
    proxy: Proxy to use
    max_age: Maximum age of the cache
    store_in_cache: Whether to store the result in the cache
    profile: Browser profile for persistent state (e.g. {"name": "my-profile", "saveChanges": True})
Returns:
    Document
c              3   (   "   T F  qR Jx  K
  	  R # 5iN .0vs   & rA   	<genexpr>)FirecrawlClient.scrape.<locals>.<genexpr>   s       e  )d1$  )d   TFr[   r\   r]   r^   r_   rL   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   Nrt   )anyr
   dictitemsscrape_moduler+   rW   )rX   r:   r[   r\   r]   r^   r_   rL   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   krw   optionss   &&$$$$$$$$$$$$$$$$$$$$$   rA   r+   FirecrawlClient.scrapeo   s,   Z S  e<Whs{  FM  X`  yM  Zb  dm  ot  v}  M  OV  Xc  )d  eSSS  e<Whs{  FM  X`  yM  Zb  dm  ot  v}  M  OV  Xc  )d  e  e  e1   
 $ !!! *! *	!
 #4!  ! "! !  !  ! "! '<! &:! $! "!  $!!" #!$  %!&  .'!(  )!* (+!, eg-! ( !1, - q!t ! (
0 ko1 	2 ##D$4$4c7CC1(s   7	C6C6promptlanguagenodeoriginc                   < V ^8  d   QhRS[ RS[S[ ,          RS[S[ ,          RS[R,          RS[S[,          RS[S[ ,          /# r9   job_idcoder   r   rL   r   pythonr   bashr=   r   r   rP   )r?   r@   s   "rA   rB   rC      s]     "
 "
"
 sm"

 "
 23"
 #"
 "
rD   c          
     P    \         P                  ! V P                  VVVVVVR7      # )a  
Interact with the browser session associated with a scrape job.

Either ``code`` or ``prompt`` must be provided.

Args:
    job_id: Scrape job ID
    code: Code to execute (optional if prompt is provided)
    prompt: Natural-language instruction for the browser agent (optional if code is provided)
    language: Programming language ("python", "node", or "bash")
    timeout: Execution timeout in seconds (1-300)
    origin: Optional request origin tag

Returns:
    BrowserExecuteResponse with execution result
r   r   rL   r   )r~   interactrW   rX   r   r   r   r   rL   r   s   &&&$$$$rA   r   FirecrawlClient.interact   s2    4 %%
 	
rD   c                    < V ^8  d   QhRS[ /# r9   r   r=   )r?   r@   s   "rA   rB   rC      s     
H 
Hs 
HrD   c                D    \         P                  ! V P                  V4      # )z
Stop the interaction session associated with a scrape job.

Args:
    job_id: Scrape job ID

Returns:
    BrowserDeleteResponse
)r~   stop_interactionrW   rX   r   s   &&rA   r    FirecrawlClient.stop_interaction   s     --d.>.>GGrD   c                    < V ^8  d   QhRS[ /# r   r   )r?   r@   s   "rA   rB   rC      s     - -s -rD   c                $    V P                  V4      # z(Deprecated alias for stop_interaction().r   r   s   &&rA   stop_interactive_browser(FirecrawlClient.stop_interactive_browser       $$V,,rD   c                   < V ^8  d   QhRS[ RS[S[ ,          RS[S[ ,          RS[R,          RS[S[,          RS[S[ ,          /# r   r   )r?   r@   s   "rA   rB   rC      s]     
 

 sm

 
 23
 #
 
rD   c          	     0    V P                  VVVVVVR7      # )z Deprecated alias for interact().r   )r   r   s   &&&$$$$rA   scrape_executeFirecrawlClient.scrape_execute   s,     }}  
 	
rD   c                    < V ^8  d   QhRS[ /# r   r   )r?   r@   s   "rA   rB   rC     s     - -C -rD   c                $    V P                  V4      # r   r   r   s   &&rA   delete_scrape_browser%FirecrawlClient.delete_scrape_browser  r   rD   sources
categorieslimittbsignore_invalid_urlsscrape_optionsc                  < V ^8  d   QhRS[ RS[S[S[,          ,          RS[S[S[,          ,          RS[S[,          RS[S[ ,          RS[S[ ,          RS[S[,          RS[S[,          R	S[S[,          R
S[S[ ,          RS[/# )r9   queryr   r   r   r   rd   r   rL   r   rn   r;   )	r=   r   r   r   r   rP   r>   r
   r   )r?   r@   s   "rA   rB   rC     s     )? )?)? $|,-	)?
 T.12)? })? c])? 3-)? &d^)? #)? !/)? c])? 
)?rD   c       	        n    \        VVVVVVVVV	V
R7
      p\        P                  ! V P                  V4      # )av  
Search for documents.

Args:
    query: Search query string
    limit: Maximum number of results to return (default: 5)
    tbs: Time-based search filter
    location: Location string for search
    timeout: Request timeout in milliseconds (default: 300000)
    page_options: Options for scraping individual pages
    
Returns:
    SearchData containing the search results
)
r   r   r   r   r   rd   r   rL   r   rn   )r   search_moduler.   rW   )rX   r   r   r   r   r   rd   r   rL   r   rn   requests   &&$$$$$$$$$ rA   r.   FirecrawlClient.search  sG    8  ! 3)#
 ##D$4$4g>>rD   exclude_pathsinclude_pathsmax_discovery_depthsitemapignore_sitemapignore_query_parametersFcrawl_entire_domainallow_external_linksallow_subdomainsignore_robots_txtdelaymax_concurrencywebhookregex_on_full_urldeduplicate_similar_urlsTzero_data_retentionpoll_intervalrequest_timeoutc          2        < V ^8  d   QhRS[ RS[S[ ,          RS[S[S[ ,          ,          RS[S[S[ ,          ,          RS[S[,          RS[S[R,          ,          RS[S[,          RS[R	S[S[,          R
S[RS[RS[RS[RS[S[,          RS[S[,          RS[S[S[ S[3,          ,          RS[S[,          RS[RS[RS[RS[RS[S[,          RS[S[	,          RS[S[ ,          RS[
/# )r9   r:   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rL   r   rn   r;   onlyincludeskip)r=   r   r   rP   r   r>   r   r   r
   rO   r   )r?   r@   s   "rA   rB   rC   6  su    d
 d
d
 	d

  S	*d
  S	*d
 &c]d
 '";<=d
 !d
 "&d
 }d
 "d
 #d
 d
  d
  }!d
" "##d
$ %] 234%d
& !/'d
(  )d
* #'+d
, "-d
. /d
0 #1d
2 "%3d
4 c]5d
6 
7d
rD   c                  TpVf   Ve   V'       d   RMRp/ RVbRVbRVbRVbRVbRVbR	V	bR
V
bRVbRVbRVbRVbRVbRVbRVbRVbRVbRVRV/CpVe   VVR&   \        R/ VB p\        P                  ! V P                  VVVVR7      # )a  
Start a crawl job and wait for it to complete.

Args:
    url: Target URL to start crawling from
    prompt: Optional prompt to guide the crawl
    exclude_paths: Patterns of URLs to exclude
    include_paths: Patterns of URLs to include
    max_discovery_depth: Maximum depth for finding new URLs
    sitemap: Sitemap usage mode ("only" | "include" | "skip")
    ignore_sitemap: Deprecated alias for sitemap ("skip" when true, "include" when false)
    ignore_query_parameters: Ignore URL parameters
    limit: Maximum pages to crawl
    crawl_entire_domain: Follow parent directory links
    allow_external_links: Follow external domain links
    allow_subdomains: Follow subdomains
    ignore_robots_txt: Whether to ignore robots.txt rules
    delay: Delay in seconds between scrapes
    max_concurrency: Maximum number of concurrent scrapes
    webhook: Webhook configuration for notifications
    scrape_options: Page scraping configuration
    regex_on_full_url: Apply includePaths/excludePaths regex to the full URL (including query parameters) instead of just the pathname
    deduplicate_similar_urls: Whether to deduplicate similar URLs during crawl (default: True)
    zero_data_retention: Whether to delete data after 24 hours
    poll_interval: Seconds between status checks
    timeout: Maximum seconds to wait for the entire crawl job to complete (None for no timeout)
    request_timeout: Timeout (in seconds) for each individual HTTP request, including pagination requests when fetching results. If there are multiple pages, each page request gets this timeout
    
Returns:
    CrawlJob when job completes
    
Raises:
    ValueError: If request is invalid
    Exception: If the crawl fails to start or complete
    TimeoutError: If timeout is reached
r   r   r:   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   r   )r   rL   r   rt   )r   crawl_moduler,   rW   )rX   r:   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rL   r   rn   resolved_sitemaprequest_kwargsr   s   &&$$$$$$$$$$$$$$$$$$$$$$$   rA   r,   FirecrawlClient.crawl6  sP   @ ##(B)7vY
3
f
 ]
 ]	

 "#6
 &'>
 U
 "#6
 #$8
  0
  !2
 U
 
 w
 n
   !2!
" '(@#
$ "#6;'
* '(8N9%00!!'+
 	
rD   c          ,        < V ^8  d   QhRS[ RS[S[ ,          RS[S[S[ ,          ,          RS[S[S[ ,          ,          RS[S[,          RS[S[R,          ,          RS[S[,          RS[R	S[S[,          R
S[RS[RS[RS[RS[S[,          RS[S[,          RS[S[S[ S[3,          ,          RS[S[,          RS[RS[RS[RS[S[ ,          RS[	/# )r9   r:   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   r;   r   )
r=   r   r   rP   r   r>   r   r   r
   r   )r?   r@   s   "rA   rB   rC     sd    WC WCWC 	WC
  S	*WC  S	*WC &c]WC '";<=WC !WC "&WC }WC "WC #WC WC  WC  }!WC" "##WC$ %] 234%WC& !/'WC(  )WC* #'+WC, "-WC. c]/WC0 
1WCrD   c                  TpVf   Ve   V'       d   RMRp/ RVbRVbRVbRVbRVbRVbR	V	bR
V
bRVbRVbRVbRVbRVbRVbRVbRVbRVbRVRV/CpVe   VVR&   \        R/ VB p\        P                  ! V P                  V4      # )ac  
Start an asynchronous crawl job.

Args:
    url: Target URL to start crawling from
    prompt: Optional prompt to guide the crawl
    exclude_paths: Patterns of URLs to exclude
    include_paths: Patterns of URLs to include
    max_discovery_depth: Maximum depth for finding new URLs
    sitemap: Sitemap usage mode ("only" | "include" | "skip")
    ignore_sitemap: Deprecated alias for sitemap ("skip" when true, "include" when false)
    ignore_query_parameters: Ignore URL parameters
    limit: Maximum pages to crawl
    crawl_entire_domain: Follow parent directory links
    allow_external_links: Follow external domain links
    allow_subdomains: Follow subdomains
    ignore_robots_txt: Whether to ignore robots.txt rules
    delay: Delay in seconds between scrapes
    max_concurrency: Maximum number of concurrent scrapes
    webhook: Webhook configuration for notifications
    scrape_options: Page scraping configuration
    regex_on_full_url: Apply includePaths/excludePaths regex to the full URL (including query parameters) instead of just the pathname
    deduplicate_similar_urls: Whether to deduplicate similar URLs during crawl (default: True)
    zero_data_retention: Whether to delete data after 24 hours

Returns:
    CrawlResponse with job information
    
Raises:
    ValueError: If request is invalid
    Exception: If the crawl operation fails to start
r   r   r:   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   r   rt   )r   r   start_crawlrW   )rX   r:   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   r   r   r   s   &&$$$$$$$$$$$$$$$$$$$$   rA   r   FirecrawlClient.start_crawl  sA   r ##(B)7vY
3
f
 ]
 ]	

 "#6
 &'>
 U
 "#6
 #$8
  0
  !2
 U
 
 w
 n
   !2!
" '(@#
$ "#6;'
* '(8N9%00''(8(8'BBrD   c                R   < V ^8  d   QhRS[ RS[S[,          RS[S[,          RS[/# )r9   r   pagination_configr   r;   )r=   r   r'   rO   r   )r?   r@   s   "rA   rB   rC     s=     
 

 $$45

 "%
 

rD   c               J    \         P                  ! V P                  VVVR7      # )a  
Get the status of a crawl job.

Args:
    job_id: ID of the crawl job
    pagination_config: Optional configuration for pagination behavior
    request_timeout: Timeout (in seconds) for each individual HTTP request. When auto-pagination 
        is enabled (default) and there are multiple pages of results, this timeout applies to 
        each page request separately, not to the entire operation
    
Returns:
    CrawlJob with current status and data
    
Raises:
    Exception: If the status check fails
)r   r   )r   get_crawl_statusrW   )rX   r   r   r   s   &&&$rA   r    FirecrawlClient.get_crawl_status  s)    . ,,/+	
 	
rD   c                <   < V ^8  d   QhRS[ RS[S[,          RS[/# )r9   next_urlr   r;   )r=   r   rO   r   )r?   r@   s   "rA   rB   rC     s-     
 

 "%	

 

rD   c               H    \         P                  ! V P                  VVR7      # )z
Fetch a single page of crawl results using a next URL.

Args:
    next_url: Opaque next URL from a prior crawl status response
    request_timeout: Timeout (in seconds) for the HTTP request

Returns:
    CrawlJob with the page data and next URL (if any)
r   )r   get_crawl_status_pagerW   rX   r   r   s   &&$rA   r   %FirecrawlClient.get_crawl_status_page  s&      11+
 	
rD   c                &   < V ^8  d   QhRS[ RS[/# r9   crawl_idr;   )r=   r   )r?   r@   s   "rA   rB   rC   )  s      
I 
I 
I1D 
IrD   c                D    \         P                  ! V P                  V4      # )z
Retrieve error details and robots.txt blocks for a given crawl job.

Args:
    crawl_id: The ID of the crawl job

Returns:
    CrawlErrorsResponse containing per-URL errors and robots-blocked URLs
)r   get_crawl_errorsrW   rX   r   s   &&rA   r    FirecrawlClient.get_crawl_errors)  s     ,,T-=-=xHHrD   c                    < V ^8  d   QhRS[ /# r9   r;   r   )r?   r@   s   "rA   rB   rC   5  s     @ @#7 @rD   c                B    \         P                  ! V P                  4      # )zw
Get a list of currently active crawl jobs.

Returns:
    ActiveCrawlsResponse containing a list of active crawl jobs.
)r   get_active_crawlsrW   rX   s   &rA   r   !FirecrawlClient.get_active_crawls5  s     --d.>.>??rD   c                    < V ^8  d   QhRS[ /# r   r   )r?   r@   s   "rA   rB   rC   >  s     ( (3 (rD   c                "    V P                  4       # )z
List currently active crawl jobs for the authenticated team.

Returns:
    ActiveCrawlsResponse containing the list of active crawl jobs
)r   r   s   &rA   active_crawlsFirecrawlClient.active_crawls>  s     %%''rD   r.   include_subdomainsc                   < V ^8  d   QhRS[ RS[S[ ,          RS[S[,          RS[S[,          RS[S[,          RS[S[R,          ,          RS[S[,          RS[S[ ,          R	S[S[,          R
S[/
# )r9   r:   r.   r   r   r   r   rL   rn   rd   r;   r   )r=   r   r>   rP   r   r&   r   )r?   r@   s   "rA   rB   rC   G  s     &> &>&> 	&>
 %TN&> "*$&> }&> '";<=&> #&> c]&> 8$&> 
&>rD   c                   \         ;QJ d     R W#WEWgW3 4       F  '       g   K   RM	  RM! R W#WEWgW3 4       4      '       d   \        TTTTVe   TMRVVV	R7      MRp
\        P                  ! V P                  W4      # )a  Map a URL and return discovered links.

Args:
    url: Root URL to explore
    search: Optional substring filter for discovered links
    include_subdomains: Whether to include subdomains
    ignore_query_parameters: Whether to ignore query parameters when mapping
    limit: Maximum number of links to return
    sitemap: Sitemap usage mode ("only" | "include" | "skip")
    timeout: Request timeout in milliseconds

Returns:
    MapData containing the discovered links
c              3   (   "   T F  qR Jx  K
  	  R # 5irs   rt   ru   s   & rA   rx   &FirecrawlClient.map.<locals>.<genexpr>k  s       O  )N1$  )Nrz   TFNr   )r.   r   r   r   r   rL   rn   rd   )r{   r   
map_moduler/   rW   )rX   r:   r.   r   r   r   r   rL   rn   rd   r   s   &&$$$$$$$$ rA   r/   FirecrawlClient.mapG  s    H S  OE\el  xC  )N  OSSS  OE\el  xC  )N  O  O  O 1$;&2G	#	
 UY 	 ~~d..==rD   c                &   < V ^8  d   QhRS[ RS[/# r   r<   )r?   r@   s   "rA   rB   rC   o  s     
E 
ES 
ET 
ErD   c                D    \         P                  ! V P                  V4      # )z
Cancel a crawl job.

Args:
    crawl_id: The ID of the crawl job to cancel
    
Returns:
    bool: True if the crawl was cancelled, False otherwise
)r   cancel_crawlrW   r   s   &&rA   r   FirecrawlClient.cancel_crawlo  s     (()9)98DDrD   c                ,   < V ^8  d   QhRS[ RS[ RS[/# )r9   r:   r   r;   )r=   r   )r?   r@   s   "rA   rB   rC   {  s'     L L LS L_ LrD   c                \    \        WR7      p\        P                  ! V P                  V4      # )zDerive crawl parameters from natural-language prompt.

Args:
    url: Root URL
    prompt: Instruction describing how to crawl

Returns:
    CrawlParamsData with normalized crawl configuration
)r:   r   )r   r   crawl_params_previewrW   )rX   r:   r   r   s   &&& rA   r   $FirecrawlClient.crawl_params_preview{  s'     %<001A1A7KKrD   schemasystem_promptenable_web_searchshow_sourcesr2   c                0  < V ^8  d   QhRS[ S[S[,          ,          RS[ S[,          RS[ S[S[S[3,          ,          RS[ S[,          RS[ S[,          RS[ S[,          RS[ S[,          RS[ R	,          R
S[ S[,          RS[ S[,          RS[ S[,          /# )r9   urlsr   r  r  r   r  r  r   r
   r   rn   r2   )r   r   r=   r   r   r>   r(   )r?   r@   s   "rA   rB   rC     s     2
 2
tCy!2
 	2

 c3h(2
  }2
 'tn2
 $D>2
 tn2
 !12
 &d^2
 c]2
 %2
rD   c       
        Z    \         P                  ! V P                  VVVVVVVVV	V
VR7      # )a  Start an extract job (non-blocking).

.. deprecated::
    The extract endpoint is in maintenance mode and its use is discouraged.
    Review https://docs.firecrawl.dev/developer-guides/usage-guides/choosing-the-data-extractor
    to find a replacement.

Args:
    urls: URLs to extract from (optional)
    prompt: Natural-language instruction for extraction
    schema: Target JSON schema for the output
    system_prompt: Optional system instruction
    allow_external_links: Allow hyperlinks in output
    enable_web_search: Whether to augment with web search
    show_sources: Include per-field/source mapping when available
    scrape_options: Scrape options applied prior to extraction
    ignore_invalid_urls: Skip invalid URLs instead of failing
    integration: Integration tag/name
    agent: Agent configuration
Returns:
    Response payload with job id/status (poll with get_extract_status)
)
r   r  r  r   r  r  r   r   rn   r2   )extract_modulestart_extractrW   )rX   r  r   r  r  r   r  r  r   r   rn   r2   s   &&$$$$$$$$$$rA   r
  FirecrawlClient.start_extract  sB    J ++'!5/%) 3#
 	
rD   c                L  < V ^8  d   QhRS[ S[S[,          ,          RS[ S[,          RS[ S[S[S[3,          ,          RS[ S[,          RS[ S[,          RS[ S[,          RS[ S[,          RS[ R	,          R
S[ S[,          RS[RS[ S[,          RS[ S[,          RS[ S[,          /# )r9   r  r   r  r  r   r  r  r   r
   r   r   rL   rn   r2   )r   r   r=   r   r   r>   rP   r(   )r?   r@   s   "rA   rB   rC     s     8
 8
tCy!8
 	8

 c3h(8
  }8
 'tn8
 $D>8
 tn8
 !18
 &d^8
 8
 #8
 c]8
 %8
rD   c               ^    \         P                  ! V P                  VVVVVVVVV	V
VVVR7      # )a  Extract structured data and wait until completion.

.. deprecated::
    The extract endpoint is in maintenance mode and its use is discouraged.
    Review https://docs.firecrawl.dev/developer-guides/usage-guides/choosing-the-data-extractor
    to find a replacement.

Args:
    urls: URLs to extract from (optional)
    prompt: Natural-language instruction for extraction
    schema: Target JSON schema for the output
    system_prompt: Optional system instruction
    allow_external_links: Allow hyperlinks in output
    enable_web_search: Whether to augment with web search
    show_sources: Include per-field/source mapping when available
    scrape_options: Scrape options applied prior to extraction
    ignore_invalid_urls: Skip invalid URLs instead of failing
    poll_interval: Seconds between status checks
    timeout: Maximum seconds to wait (None for no timeout)
    integration: Integration tag/name
    agent: Agent configuration
Returns:
    Final extract response when completed
)r   r  r  r   r  r  r   r   r   rL   rn   r2   )r	  r1   rW   )rX   r  r   r  r  r   r  r  r   r   r   rL   rn   r2   s   &&$$$$$$$$$$$$rA   r1   FirecrawlClient.extract  sH    R %%'!5/%) 3'#
 	
rD   append_to_ididempotency_keyc          7      .  < V ^8  d   QhRS[ S[,          RS[S[ R,          ,          RS[S[S[S[3,          ,          RS[S[ S[,          ,          RS[S[ S[,          ,          RS[S[,          RS[S[,          R	S[S[,          R
S[S[,          RS[S[S[ S[,          S[ S[S[S[3,          ,          3,          ,          RS[S[ S[R,          ,          ,          RS[R,          RS[S[,          RS[S[,          RS[S[,          RS[S[,          RS[S[,          RS[S[,          RS[S[,          RS[S[,          RS[S[S[S[3,          ,          RS[S[,          RS[S[,          RS[S[,          RS[S[,          RS[S[,          RS[S[,          /# )r9   r  r[   r   r\   r]   r^   r_   rL   r`   ra   rb   rc   rd   r&   re   rf   rg   rh   ri   rj   rk   rl   r   r  r   r   r   rn   r  rp   	r   r=   r   r   r>   rP   r   r   r   )r?   r@   s   "rA   rB   rC     s    d
 d
3id
 $~./	d

 $sCx.)d
 tCy)d
 tCy)d
 $D>d
 #d
 3-d
 d
 %S	4c9n0E+F FGHd
 $u  &{   |  }  ~d
 :&d
  (~d
  'tn!d
" D>#d
$ 3-%d
& D>'d
( })d
* #+d
, !-d
. %] 234/d
0 sm1d
2 &d^3d
4 "#5d
6 &d^7d
8 c]9d
: "#;d
rD   c                  \         ;QJ d(    R W#WEWgWWWWVVVVV3 4       F  '       g   K   RM	  RM! R W#WEWgWWWWVVVVV3 4       4      '       dv   \        R/ \        R/ RVbRVbRVbRVbRVbR	VbR
VbRV	bRV
bRVbRVbRVbRVbRVbRVbRVbRVbRVbRVb P                  4        UUu/ uF  w  ppVf   K  VVbK  	  uppB MRp\        P
                  ! V P                  VVVVVVVVVR7
      # u uppi )a'  Start a batch scrape job over multiple URLs (non-blocking).

Args:
    urls: List of URLs to scrape
    formats: Output formats to collect per URL
    headers: HTTP headers
    include_tags: HTML tags to include
    exclude_tags: HTML tags to exclude
    only_main_content: Restrict scraping to main content
    timeout: Per-request timeout in milliseconds
    wait_for: Wait condition in milliseconds
    mobile: Emulate mobile viewport
    parsers: Parser list (e.g., ["pdf"]) 
    actions: Browser actions to perform
    location: Location settings
    skip_tls_verification: Skip TLS verification
    remove_base64_images: Remove base64 images from output
    fast_mode: Prefer faster scraping modes
    use_mock: Use a mock data source (internal/testing)
    block_ads: Block ads during scraping
    proxy: Proxy setting
    max_age: Cache max age
    store_in_cache: Whether to store results in cache
    webhook: Webhook configuration
    append_to_id: Append to an existing batch job
    ignore_invalid_urls: Skip invalid URLs without failing
    max_concurrency: Max concurrent scrapes
    zero_data_retention: Delete data after 24 hours
    integration: Integration tag/name
    idempotency_key: Header used to deduplicate starts

Returns:
    Response payload with job id (poll with get_batch_scrape_status)
c              3   (   "   T F  qR Jx  K
  	  R # 5irs   rt   ru   s   & rA   rx   5FirecrawlClient.start_batch_scrape.<locals>.<genexpr>M         O  )N1$  )Nrz   TFr[   r\   r]   r^   r_   rL   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   N)r   r   r  r   r   r   rn   r  rt   )r{   r
   r|   r}   batch_modulestart_batch_scraperW   )rX   r  r[   r\   r]   r^   r_   rL   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   r   r  r   r   r   rn   r  r   rw   r   s   &&$$$$$$$$$$$$$$$$$$$$$$$$$$   rA   r  "FirecrawlClient.start_batch_scrape  s   n S  O<Whs{  FM  X`  yM  Zb  dm  ot  v}  M  )N  OSSS  O<Whs{  FM  X`  yM  Zb  dm  ot  v}  M  )N  O  O  O-   
 $ !!! *! *	!
 #4!  ! "! !  !  ! "! '<! &:! $! "!  $!!" #!$  %!&  .'!( eg)! ( !1( ) q!t ! (
, UY- 	0 ..% 3+ 3#+
 	
/(s   -	C4;C4c                6   < V ^8  d   QhRS[ RS[S[,          /# )r9   r   r   )r=   r   r'   )r?   r@   s   "rA   rB   rC   \  s%     
 

 $$45
rD   c                H    \         P                  ! V P                  VVR7      # )zGet current status and any scraped data for a batch job.

Args:
    job_id: Batch job ID
    pagination_config: Optional configuration for pagination behavior

Returns:
    Status payload including counts and partial data
)r   )r  get_batch_scrape_statusrW   )rX   r   r   s   &&&rA   r  'FirecrawlClient.get_batch_scrape_status\  s&     33/
 	
rD   c                6   < V ^8  d   QhRS[ RS[S[,          /# )r9   r   r   )r=   r   rO   )r?   r@   s   "rA   rB   rC   p  s#     
 

 "%	
rD   c               H    \         P                  ! V P                  VVR7      # )a  Fetch a single page of batch scrape results using a next URL.

Args:
    next_url: Opaque next URL from a prior batch scrape status response
    request_timeout: Timeout (in seconds) for the HTTP request

Returns:
    BatchScrapeJob with the page data and next URL (if any)
r   )r  get_batch_scrape_status_pagerW   r   s   &&$rA   r   ,FirecrawlClient.get_batch_scrape_status_pagep  s&     88+
 	
rD   c                &   < V ^8  d   QhRS[ RS[/# r9   r   r;   r<   )r?   r@   s   "rA   rB   rC     s     	J 	J# 	J$ 	JrD   c                D    \         P                  ! V P                  V4      # )zoCancel a running batch scrape job.

Args:
    job_id: Batch job ID

Returns:
    True if the job was cancelled
)r  cancel_batch_scraperW   r   s   &&rA   r%  #FirecrawlClient.cancel_batch_scrape  s     //0@0@&IIrD   c                    < V ^8  d   QhRS[ /# r   r   )r?   r@   s   "rA   rB   rC     s     	O 	Oc 	OrD   c                D    \         P                  ! V P                  V4      # )zRetrieve error details for a batch scrape job.

Args:
    job_id: Batch job ID

Returns:
    Errors and robots-blocked URLs for the job
)batch_methodsget_batch_scrape_errorsrW   r   s   &&rA   r*  'FirecrawlClient.get_batch_scrape_errors  s     44T5E5EvNNrD   c                    < V ^8  d   QhRS[ /# r   r   )r?   r@   s   "rA   rB   rC     s     K K KrD   c                D    \         P                  ! V P                  V4      # )a  Get the current status (and data if completed) of an extract job.

.. deprecated::
    The extract endpoint is in maintenance mode and its use is discouraged.
    Review https://docs.firecrawl.dev/developer-guides/usage-guides/choosing-the-data-extractor
    to find a replacement.

Args:
    job_id: Extract job ID

Returns:
    Extract response payload with status and optional data
)r	  get_extract_statusrW   r   s   &&rA   r.  "FirecrawlClient.get_extract_status  s     001A1A6JJrD   max_creditsstrict_constrain_to_urlsmodelc                   < V ^8  d   QhRS[ S[S[,          ,          RS[RS[ S[,          RS[ S[,          RS[ S[,          RS[ S[,          RS[ S[R	,          ,          RS[ S[S[S[3,          ,          /# )
r9   r  r   r  rn   r0  r1  r2  r   zspark-1-prozspark-1-mini	r   r   r=   r   rP   r>   r   r   r   )r?   r@   s   "rA   rB   rC     s     #
 #
tCy!#
 	#

 #
 c]#
 c]#
 #+4.#
  =>?#
 %%7 789#
rD   c               T    \         P                  ! V P                  VVVVVVVVR7	      # )a  Start an agent job (non-blocking).

Args:
    urls: URLs to process (optional)
    prompt: Natural-language instruction for the agent
    schema: Target JSON schema for the output (dict or Pydantic BaseModel)
    integration: Integration tag/name
    max_credits: Maximum credits to use (optional)
    model: Model to use for the agent ("spark-1-pro" or "spark-1-mini")
    webhook: Webhook URL or configuration for notifications
Returns:
    Response payload with job id/status (poll with get_agent_status)
)r   r  rn   r0  r1  r2  r   )agent_modulestart_agentrW   )	rX   r  r   r  rn   r0  r1  r2  r   s	   &&$$$$$$$rA   r8  FirecrawlClient.start_agent  s8    2 ''##%=

 
	
rD   c                
  < V ^8  d   QhRS[ S[S[,          ,          RS[RS[ S[,          RS[ S[,          RS[RS[ S[,          RS[ S[,          RS[ S[,          R	S[ S[R,          ,          R
S[ S[S[S[3,          ,          /
# )r9   r  r   r  rn   r   rL   r0  r1  r2  r   r4  r5  )r?   r@   s   "rA   rB   rC     s     )
 )
tCy!)
 	)

 )
 c])
 )
 #)
 c])
 #+4.)
  =>?)
 %%7 789)
rD   c       	        X    \         P                  ! V P                  VVVVVVVVV	V
R7      # )aP  Run an agent and wait until completion.

Args:
    urls: URLs to process (optional)
    prompt: Natural-language instruction for the agent
    schema: Target JSON schema for the output (dict or Pydantic BaseModel)
    integration: Integration tag/name
    poll_interval: Seconds between status checks
    timeout: Maximum seconds to wait (None for no timeout)
    max_credits: Maximum credits to use (optional)
    model: Model to use for the agent ("spark-1-pro" or "spark-1-mini")
    webhook: Webhook URL or configuration for notifications
Returns:
    Final agent response when completed
)	r   r  rn   r   rL   r0  r1  r2  r   )r7  r2   rW   )rX   r  r   r  rn   r   rL   r0  r1  r2  r   s   &&$$$$$$$$$rA   r2   FirecrawlClient.agent  s>    : !!#'#%=
 	
rD   c                    < V ^8  d   QhRS[ /# r   r   )r?   r@   s   "rA   rB   rC     s     	G 	Gs 	GrD   c                D    \         P                  ! V P                  V4      # )zGet the current status (and data if completed) of an agent job.

Args:
    job_id: Agent job ID

Returns:
    Agent response payload with status and optional data
)r7  get_agent_statusrW   r   s   &&rA   r?   FirecrawlClient.get_agent_status  s     ,,T-=-=vFFrD   c                &   < V ^8  d   QhRS[ RS[/# r#  r<   )r?   r@   s   "rA   rB   rC     s     	C 	C3 	C4 	CrD   c                D    \         P                  ! V P                  V4      # )zjCancel a running agent job.

Args:
    job_id: Agent job ID

Returns:
    True if the agent was cancelled
)r7  cancel_agentrW   r   s   &&rA   rC  FirecrawlClient.cancel_agent  s     (()9)96BBrD   c                B    \         P                  ! V P                  4      # )zCGet current concurrency and maximum allowed for this team/key (v2).)usage_methodsget_concurrencyrW   r   s   &rA   rG  FirecrawlClient.get_concurrency      ,,T-=-=>>rD   c                B    \         P                  ! V P                  4      # )z-Get remaining credits for this team/key (v2).)rF  get_credit_usagerW   r   s   &rA   rK   FirecrawlClient.get_credit_usage      --d.>.>??rD   c                B    \         P                  ! V P                  4      # )z$Get recent token usage metrics (v2).)rF  get_token_usagerW   r   s   &rA   rO  FirecrawlClient.get_token_usage  rI  rD   c                    < V ^8  d   QhRS[ /# r9   
by_api_keyr>   )r?   r@   s   "rA   rB   rC     s     W Wd WrD   c                D    \         P                  ! V P                  V4      # )z!Get historical credit usage (v2).)rF  get_credit_usage_historicalrW   rX   rS  s   &&rA   rV  +FirecrawlClient.get_credit_usage_historical  s    889I9I:VVrD   c                    < V ^8  d   QhRS[ /# rR  rT  )r?   r@   s   "rA   rB   rC   !  s     V VT VrD   c                D    \         P                  ! V P                  V4      # )z Get historical token usage (v2).)rF  get_token_usage_historicalrW   rW  s   &&rA   r[  *FirecrawlClient.get_token_usage_historical!  s    778H8H*UUrD   c                B    \         P                  ! V P                  4      # )z*Get metrics about the team's scrape queue.)rF  get_queue_statusrW   r   s   &rA   r^   FirecrawlClient.get_queue_status%  rM  rD   ttlactivity_ttlstream_web_viewc                   < V ^8  d   QhRS[ S[,          RS[ S[,          RS[ S[,          RS[ S[S[S[3,          ,          /# )r9   r`  ra  rb  rm   )r   rP   r>   r   r=   r   )r?   r@   s   "rA   rB   rC   *  sN     
 
 c]
 sm	

 "$
 $sCx.)
rD   c               L    \         P                  ! V P                  VVVVR7      # )a  Create a new browser session.

Args:
    ttl: Total time-to-live in seconds (30-3600, default 300)
    activity_ttl: Inactivity TTL in seconds (10-3600)
    stream_web_view: Whether to enable webview streaming
    profile: Profile config with ``name`` (str) and
        optional ``save_changes`` (bool, default ``True``)

Returns:
    BrowserCreateResponse with session id and CDP URL
)r`  ra  rb  rm   )browser_moduler3   rW   )rX   r`  ra  rb  rm   s   &$$$$rA   r3   FirecrawlClient.browser*  s,    ( %%%+
 	
rD   r   c          	      P   < V ^8  d   QhRS[ RS[ RS[R,          RS[S[,          /# )r9   
session_idr   r   rL   r   )r=   r   r   rP   )r?   r@   s   "rA   rB   rC   F  s=     
 

 

 23
 #
rD   c               L    \         P                  ! V P                  VVVVR7      # )a!  Execute code in a browser session.

Args:
    session_id: Browser session ID
    code: Code to execute
    language: Programming language ("python", "node", or "bash")
    timeout: Execution timeout in seconds (1-300, default 30)

Returns:
    BrowserExecuteResponse with execution result
)r   rL   )re  browser_executerW   )rX   rh  r   r   rL   s   &&&$$rA   rj  FirecrawlClient.browser_executeF  s,    & --
 	
rD   c                    < V ^8  d   QhRS[ /# )r9   rh  r   )r?   r@   s   "rA   rB   rC   a  s     	K 	K 	KrD   c                D    \         P                  ! V P                  V4      # )zhDelete a browser session.

Args:
    session_id: Browser session ID

Returns:
    BrowserDeleteResponse
)re  delete_browserrW   )rX   rh  s   &&rA   rn  FirecrawlClient.delete_browsera  s     ,,T-=-=zJJrD   statusc                >   < V ^8  d   QhRS[ S[R,          ,          /# )r9   rp  )active	destroyed)r   r   )r?   r@   s   "rA   rB   rC   l  s"     
 
 !678
rD   c               F    \         P                  ! V P                  VR7      # )zList browser sessions.

Args:
    status: Filter by session status ("active" or "destroyed")

Returns:
    BrowserListResponse with list of sessions
)rp  )re  list_browsersrW   )rX   rp  s   &$rA   ru  FirecrawlClient.list_browsersl  s#     ++
 	
rD   kindr,   c          
      V   < V ^8  d   QhRS[ RS[R,          RS[RS[S[,          RS[/# )r9   r   rw  r   rL   r;   )r,   r-   )r=   r   rP   r   r5   )r?   r@   s   "rA   rB   rC   ~  sN     ^ ^^ &'	^
 ^ #^ 
^rD   c                   \        WW#VR7      # )a  Create a watcher for crawl or batch jobs.

Args:
    job_id: Job ID to watch
    kind: Job kind ("crawl" or "batch")
    poll_interval: Seconds between status checks
    timeout: Maximum seconds to watch (None for no timeout)

Returns:
    Watcher instance
)rw  r   rL   r4   )rX   r   rw  r   rL   s   &&$$$rA   watcherFirecrawlClient.watcher~  s    & t$U\]]rD   wait_timeoutc          ;      J  < V ^8  d   QhRS[ S[,          RS[S[ R,          ,          RS[S[S[S[3,          ,          RS[S[ S[,          ,          RS[S[ S[,          ,          RS[S[,          RS[S[,          R	S[S[,          R
S[S[,          RS[S[S[ S[,          S[ S[S[S[3,          ,          3,          ,          RS[S[ S[R ,          ,          ,          RS[R,          RS[S[,          RS[S[,          RS[S[,          RS[S[,          RS[S[,          RS[S[,          RS[S[,          RS[S[,          RS[S[S[S[3,          ,          RS[S[,          RS[S[,          RS[S[,          RS[S[,          RS[S[,          RS[S[,          RS[RS[S[,          /# )!r9   r  r[   r   r\   r]   r^   r_   rL   r`   ra   rb   rc   rd   r&   re   rf   rg   rh   ri   rj   rk   rl   r   r  r   r   r   rn   r  r   r|  rp   r  )r?   r@   s   "rA   rB   rC     s    I
 I
3iI
 $~./	I

 $sCx.)I
 tCy)I
 tCy)I
 $D>I
 #I
 3-I
 I
 %S	4c9n0E+F FGHI
 $u  &{   |  }  ~I
 :&I
  (~I
  'tn!I
" D>#I
$ 3-%I
& D>'I
( })I
* #+I
, !-I
. %] 234/I
0 sm1I
2 &d^3I
4 "#5I
6 &d^7I
8 c]9I
: "#;I
< =I
> sm?I
rD   c                  \         ;QJ d(    R W#WEWgWWWWVVVVV3 4       F  '       g   K   RM	  RM! R W#WEWgWWWWVVVVV3 4       4      '       dv   \        R/ \        R/ RVbRVbRVbRVbRVbR	VbR
VbRV	bRV
bRVbRVbRVbRVbRVbRVbRVbRVbRVbRVb P                  4        UUu/ uF  w  ppVf   K  VVbK  	  uppB MRp \        P
                  ! V P                  VV VVVVVVVVVR7      # u uppi )z5
Start a batch scrape job and wait until completion.
c              3   (   "   T F  qR Jx  K
  	  R # 5irs   rt   ru   s   & rA   rx   /FirecrawlClient.batch_scrape.<locals>.<genexpr>  r  rz   TFr[   r\   r]   r^   r_   rL   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   N)
r   r   r  r   r   r   rn   r  r   rL   rt   )r{   r
   r|   r}   r  batch_scraperW   )!rX   r  r[   r\   r]   r^   r_   rL   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   r   r  r   r   r   rn   r  r   r|  r   rw   r   s!   &&$$$$$$$$$$$$$$$$$$$$$$$$$$$$   rA   r  FirecrawlClient.batch_scrape  s   t S  O<Whs{  FM  X`  yM  Zb  dm  ot  v}  M  )N  OSSS  O<Whs{  FM  X`  yM  Zb  dm  ot  v}  M  )N  O  O  O-   
 $ !!! *! *	!
 #4!  ! "! !  !  ! "! '<! &:! $! "!  $!!" #!$  %!&  .'!( eg)! ( !1( ) q!t ! (
, UY- 	0 ((% 3+ 3#+' 
 	
/(s   -	C6;C6)rV   rW   )Nzhttps://api.firecrawl.devN   g      ?rs   )F)3__name__
__module____qualname____firstlineno____doc__staticmethodrG   rY   r+   r   r   r   r   r   r.   r,   r   r   r   r   r   r   r/   r   r   r
  r1   r  r  r   r%  r*  r.  r8  r2   r?  rC  rG  rK  rO  rV  r[  r^  r3   rj  rn  ru  rz  r  __static_attributes____classdictcell__)r@   s   @rA   r7   r7   9   s'
     2 2)
 )
VND 37	ND
 -1ND -1ND -1ND -1ND "&ND #'ND "&ND LPND AEND *.ND 15ND  04!ND" %)#ND$ #'%ND& %)'ND(  $)ND* "&+ND, *.-ND. -1/ND0 &*1ND ND`"

 !%"
 7="
 "&"
 !%"
 "
H
H 
H- -

 !%
 7=
 "&
 !%
 
(- -)? 15	)?
 6:)?  $)? ")? #')? /3)? "&)? 37)? &*)? )?Vd
 !%	d

 .2d
 .2d
 .2d
 AEd
 *.d
 ).d
  $d
 %*d
 &+d
 "'d
 #(d
   $!d
" *.#d
$ 8<%d
& 37'd
( #()d
* *.+d
, %*-d
. /d
0 "&1d
2 ,03d
4 &*5d
 d
LWC !%	WC
 .2WC .2WC .2WC AEWC *.WC ).WC  $WC %*WC &+WC "'WC #(WC   $!WC" *.#WC$ 8<%WC& 37'WC( #()WC* *.+WC, %*-WC. &*/WC WCr

 ,0
 
<
 ,0	
 
,
I 
I@ @( (&> !%	&>
 .2&> 37&>  $&> AE&> "&&> &*&> (,&> &>P
E 
EL L2
 !%	2

 ,02
 (,2
 042
 -12
 (,2
 592
 /32
 &*2
 )-2
 2
h8
 !%	8

 ,08
 (,8
 048
 -18
 (,8
 598
 /38
 8
 "&8
 &*8
 )-8
 8
td
 37	d

 -1d
 -1d
 -1d
 -1d
 "&d
 #'d
 "&d
 LPd
 AEd
 *.d
 15d
  04!d
" %)#d
$ #'%d
& %)'d
(  $)d
* "&+d
, *.-d
. 8</d
0 '+1d
2 /33d
4 *.5d
6 /37d
8 &*9d
: *.;d
 d
L
 
(
 ,0	
 
*	J 	J	O 	OK K #

 !%#
 &*#
 &*#
 48#
 CG#
 =A#
 #
J)

 !%)
 &*)
 )
 "&)
 &*)
 48)
 CG)
 =A)
 )
V	G 	G	C 	C?@?W WV V@

 "
 '+	

 +/
 -1
 
8

 7=
 "&
 
6	K 	K
 <@
 
$^ +2	^
 ^ "&^ ^*I
 37	I

 -1I
 -1I
 -1I
 -1I
 "&I
 #'I
 "&I
 LPI
 AEI
 *.I
 15I
  04!I
" %)#I
$ #'%I
& %)'I
(  $)I
* "&+I
, *.-I
. 8</I
0 '+1I
2 /33I
4 *.5I
6 /37I
8 &*9I
: *.;I
< =I
> '+?I
 I
 I
rD   r7   )Fr  rS   typingr   r   r   r   r   r   r   typesr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   utils.http_clientr)   utils.error_handlerr*   methodsr+   r~   r,   r   r-   r  r.   r   r/   r   r)  r0   rF  r1   r	  r2   r7  r3   re  rz  r5   r7   rt   rD   rA   <module>r     s{    
 F F F! ! ! ! ! ! ! ! !D * / , * * , & + + . * . c
 c
rD   