Skip to main content
Version: Next

@crawlee/http

Provides a framework for the parallel crawling of web pages using plain HTTP requests. The URLs to crawl are fed either from a static list of URLs or from a dynamic queue of URLs enabling recursive crawling of websites.

It is very fast and efficient on data bandwidth. However, if the target website requires JavaScript to display the content, you might need to use PuppeteerCrawler or PlaywrightCrawler instead, because it loads the pages using full-featured headless Chrome browser. This crawler downloads each URL using a plain HTTP request and doesn't do any HTML parsing.

The source URLs are represented using Request objects that are fed from RequestList or RequestQueue instances provided by the HttpCrawlerOptions.requestList or HttpCrawlerOptions.requestQueue constructor options, respectively.

If both HttpCrawlerOptions.requestList and HttpCrawlerOptions.requestQueue are used, the instance first processes URLs from the RequestList and automatically enqueues all of them to RequestQueue before it starts their processing. This ensures that a single URL is not crawled multiple times.

The crawler finishes when there are no more Request objects to crawl.

We can use the preNavigationHooks to adjust gotOptions:

preNavigationHooks: [
(crawlingContext, gotOptions) => {
// ...
},
]

By default, HttpCrawler only processes web pages with the text/html and application/xhtml+xml MIME content types (as reported by the Content-Type HTTP header), and skips pages with other content types. If you want the crawler to process other content types, use the HttpCrawlerOptions.additionalMimeTypes constructor option. Beware that the parsing behavior differs for HTML, XML, JSON and other types of content. For more details, see HttpCrawlerOptions.requestHandler.

New requests are only dispatched when there is enough free CPU and memory available, as judged by the crawler's ConcurrencySystem. Concurrency is tuned via the minConcurrency, maxConcurrency and maxRequestsPerMinute options of the HttpCrawler constructor, or, for finer control, by injecting a pre-configured concurrencySystem.

Example usage

import { HttpCrawler, Dataset } from '@crawlee/http';

const crawler = new HttpCrawler({
requestList,
async requestHandler({ request, response, body, contentType }) {
// Save the data to dataset.
await Dataset.pushData({
url: request.url,
html: body,
});
},
});

await crawler.run([
'http://www.example.com/page-1',
'http://www.example.com/page-2',
]);

Index

Crawlers

Other

Other

AddRequestsBatchedOptions

AddRequestsBatchedResult

ApifyLogAdapter

Re-exports ApifyLogAdapter

ArgumentValidationError

BaseCrawleeLogger

BasicCrawler

Re-exports BasicCrawler

BasicCrawlerOptions

BasicCrawlingContext

BLOCKED_STATUS_CODES

CalculatedStatistics

coerceBoolean

Re-exports coerceBoolean

coerceNumber

Re-exports coerceNumber

ConcurrencyConsumer

ConcurrencySystem

ConcurrencySystemOptions

ConfigField

Re-exports ConfigField

Configuration

Re-exports Configuration

ConfigurationInput

ConfigurationOptions

ContextMiddleware

ContextPipeline

Re-exports ContextPipeline

ContextPipelineCleanupError

ContextPipelineInitializationError

ContextPipelineInterruptedError

CpuLoadSignal

Re-exports CpuLoadSignal

CpuLoadSignalOptions

crawleeConfigFields

CrawleeLogger

Re-exports CrawleeLogger

CrawleeLoggerOptions

CrawlerAddRequestsOptions

CrawlerAddRequestsResult

CrawlerRunOptions

CrawlingContext

Re-exports CrawlingContext

createBasicRouter

CreateContextOptions

CreateSession

Re-exports CreateSession

createStorageTransaction

CriticalError

Re-exports CriticalError

Dataset

Re-exports Dataset

DatasetConsumer

Re-exports DatasetConsumer

DatasetContent

Re-exports DatasetContent

DatasetDataOptions

DatasetExportOptions

DatasetExportToOptions

DatasetIteratorOptions

DatasetJournalEntry

DatasetMapper

Re-exports DatasetMapper

DatasetOptions

Re-exports DatasetOptions

DatasetReducer

Re-exports DatasetReducer

DatasetStats

Re-exports DatasetStats

defaultRoute

Re-exports defaultRoute

DefaultRouteUserData

DefaultStorageIdentifier

EnqueueLinksOptions

EnqueueStrategy

Re-exports EnqueueStrategy

EnqueueStrategyOption

EnqueueUrlsOptions

ErrnoException

Re-exports ErrnoException

ErrorHandler

Re-exports ErrorHandler

ErrorSnapshotter

Re-exports ErrorSnapshotter

ErrorTracker

Re-exports ErrorTracker

ErrorTrackerOptions

EventLoopLoadSignal

EventLoopLoadSignalOptions

EventManager

Re-exports EventManager

EventManagerOptions

EventStatusMessageData

EventType

Re-exports EventType

EventTypeName

Re-exports EventTypeName

ExplicitStorageIdentifier

ExtractLinksOptions

field

Re-exports field

FieldsInput

Re-exports FieldsInput

FieldsOutput

Re-exports FieldsOutput

FinalStatistics

Re-exports FinalStatistics

GetUserDataFromRequest

GlobInput

Re-exports GlobInput

GlobObject

Re-exports GlobObject

IConcurrencySystem

IProxyConfiguration

IRequestLoader

Re-exports IRequestLoader

IRequestManager

Re-exports IRequestManager

IStatistics

Re-exports IStatistics

IStorage

Re-exports IStorage

JournaledRequest

Re-exports JournaledRequest

JournalEntry

Re-exports JournalEntry

KeyConsumer

Re-exports KeyConsumer

KeyValueStore

Re-exports KeyValueStore

KeyValueStoreIteratorOptions

KeyValueStoreJournalEntry

KeyValueStoreOptions

KeyValueStoreRawRecord

KeyValueStoreStats

LabeledSource

Re-exports LabeledSource

LoadedRequest

Re-exports LoadedRequest

LoadSignal

Re-exports LoadSignal

LoadSignalInfo

Re-exports LoadSignalInfo

LoadSignalsOptions

LoadSignalStartContext

LoadSnapshot

Re-exports LoadSnapshot

LocalEventManager

LocalEventManagerOptions

log

Re-exports log

Log

Re-exports Log

Logger

Re-exports Logger

LoggerJson

Re-exports LoggerJson

LoggerOptions

Re-exports LoggerOptions

LoggerText

Re-exports LoggerText

LogLevel

Re-exports LogLevel

MAX_POOL_SIZE

Re-exports MAX_POOL_SIZE

MemoryLoadSignal

Re-exports MemoryLoadSignal

MemoryLoadSignalOptions

MemoryStorageBackend

MemoryStorageOptions

MissingSessionError

NavigationSkippedError

NonRetryableError

parseRetryAfterHeader

parseValue

Re-exports parseValue

PERSIST_STATE_KEY

PersistenceOptions

PersistentRateLimitError

ProxyConfiguration

ProxyConfigurationFunction

ProxyConfigurationOptions

purgeDefaultStorages

PushErrorMessageOptions

RecordOptions

Re-exports RecordOptions

RecoverableState

Re-exports RecoverableState

RecoverableStateOptions

RecoverableStatePersistenceOptions

RegExpInput

Re-exports RegExpInput

RegExpObject

Re-exports RegExpObject

Request

Re-exports Request

RequestHandler

Re-exports RequestHandler

RequestHandlerError

RequestList

Re-exports RequestList

RequestListOptions

RequestListSourcesFunction

RequestListState

Re-exports RequestListState

RequestManagerOpener

RequestManagerTandem

RequestOptions

Re-exports RequestOptions

RequestQueue

Re-exports RequestQueue

RequestQueueJournalEntry

RequestQueueOperationInfo

RequestQueueOperationOptions

RequestQueueOptions

RequestQueueStats

RequestsLike

Re-exports RequestsLike

RequestState

Re-exports RequestState

RequestThrottledError

RequestTransform

Re-exports RequestTransform

RequestValidationError

RequireContextPipeline

ResolvedConfigValues

resolveStorageIdentifier

ResponseLike

Re-exports ResponseLike

RestrictedCrawlingContext

RetryRequestError

RouteOptions

Re-exports RouteOptions

Router

Re-exports Router

RouterHandler

Re-exports RouterHandler

RouterHandlerContext

RouterLabel

Re-exports RouterLabel

RouterRoutes

Re-exports RouterRoutes

RouteSchemas

Re-exports RouteSchemas

RoutesFromSchemas

SchemaIssue

Re-exports SchemaIssue

serializeValue

Re-exports serializeValue

ServiceConflictError

serviceLocator

Re-exports serviceLocator

ServiceLocator

Re-exports ServiceLocator

Session

Re-exports Session

SessionError

Re-exports SessionError

SessionOptions

Re-exports SessionOptions

SessionPool

Re-exports SessionPool

SessionPoolOptions

SessionReuseStrategy

SitemapRequestLoader

SitemapRequestLoaderOptions

SkippedRequestCallback

SkippedRequestReason

SnapshotResult

Re-exports SnapshotResult

SnapshotStore

Re-exports SnapshotStore

Source

Re-exports Source

StateConversion

Re-exports StateConversion

StateValidationError

StatisticPersistedState

Statistics

Re-exports Statistics

StatisticsOptions

StatisticState

Re-exports StatisticState

StatisticStateExtensionOptions

StatusMessageCallback

StatusMessageCallbackParams

StorageBackend

Re-exports StorageBackend

StorageBackendLoadSignal

StorageBackendLoadSignalOptions

StorageIdentifier

StorageInstanceManager

StorageOpenOptions

StorageStatsTracker

StorageTransaction

StorageTransactionOptions

StorageTransactionState

StorageTransactionView

StorageWriteMode

Re-exports StorageWriteMode

StorageWritePolicy

supportsDomainThrottling

SupportsDomainThrottling

SyncStateConversion

SystemInfo

Re-exports SystemInfo

TaskLoopOptions

Re-exports TaskLoopOptions

TaskLoopPredicates

ThrottlingRequestManager

ThrottlingRequestManagerOptions

TypedContextAddRequests

TypedContextEnqueueLinks

UrlPatternInput

Re-exports UrlPatternInput

UrlPatternObject

Re-exports UrlPatternObject

useState

Re-exports useState

UseStateOptions

Re-exports UseStateOptions

withDirectStorageAccess

WithRequired

Re-exports WithRequired

withStorageTransaction

FileDownloadErrorHandler

FileDownloadErrorHandler<UserData, ContextExtension>: ErrorHandler<CrawlingContext, FileDownloadCrawlingContext<UserData> & ContextExtension>

Type parameters

FileDownloadHook

FileDownloadHook<UserData>: InternalHttpHook<FileDownloadCrawlingContext<UserData>>

Type parameters

FileDownloadRequestHandler

FileDownloadRequestHandler<UserData>: RequestHandler<FileDownloadCrawlingContext<UserData>>

Type parameters

HttpErrorHandler

HttpErrorHandler<UserData, JSONData, ContextExtension>: ErrorHandler<CrawlingContext, HttpCrawlingContext<UserData, JSONData> & ContextExtension>

Type parameters

HttpHook

HttpHook<UserData, JSONData>: InternalHttpHook<HttpCrawlingContext<UserData, JSONData>>

Type parameters

  • UserData: Dictionary = any
  • JSONData: JsonValue = any

HttpRequestHandler

HttpRequestHandler<UserData, JSONData>: RequestHandler<HttpCrawlingContext<UserData, JSONData>>

Type parameters

  • UserData: Dictionary = any
  • JSONData: JsonValue = any

InternalHttpHook

InternalHttpHook<Context, ContextExtension>: (crawlingContext) => Awaitable<void | Partial<Context>>

Type parameters

  • Context
  • ContextExtension = {}

Type declaration

    • (crawlingContext): Awaitable<void | Partial<Context>>
    • Parameters

      • crawlingContext: Context & ContextExtension

      Returns Awaitable<void | Partial<Context>>

constHTTP_OPTIMIZED_CONCURRENCY_SYSTEM_OPTIONS

HTTP_OPTIMIZED_CONCURRENCY_SYSTEM_OPTIONS: ConcurrencySystemOptions = ...

A higher starting concurrency and a relaxed event loop signal, since HTTP-only crawling barely touches the event loop. HttpCrawler folds these into the ConcurrencySystem it builds by default.

A concurrencySystem you supply yourself replaces that default wholesale, tuning included, so spread these options in if you want to keep it:

new ConcurrencySystem({ ...HTTP_OPTIMIZED_CONCURRENCY_SYSTEM_OPTIONS, maxConcurrency: 50 });
Page Options