All notable changes to this project will be documented in this file.
2.23.0 (2026-04-14)
- Add output schema to ActorDefinition and includeUnrunnableActors to store API (#881) (c965d15) by @jancurn
- Turn any log streaming related errors to warnings (#876) (a3268ee) by @Pijukatel, closes #873
2.22.3 (2026-03-20)
- Add the
ActorRunStorageIdsfield to Actor Run responses (#868) (de8d315) by @Pijukatel, closes #860
- Use production mode and globalThis in browser bundle (#870) (b29c846) by @MartinKristof
2.22.2 (2026-02-20)
2.22.1 (2026-02-13)
- Add the new 'ownership' parameter to the storage list methods (#835) (7b328e1) by @nmanerikar
- Add
./browserconditional export (#845) (fab3913) by @barjin, closes #564 - Add the
readmeSummaryfield to Actor responses (#846) (7d6bb2f) by @janbuchar
2.22.0 (2026-01-27)
- actor: Add 'taggedBuilds' to ActorUpdateOptions (#830) (c2c3560) by @l2ysho, closes #829
- actor: Updates ActorStandby type (#833) (10144e8) by @l2ysho, closes #832
- Align
LimitsUpdateOptionstype with backend validation logic (#820) (74c1e2a) by @barjin, closes #813 - Fetch key-value store records as attachments (#821) (2073e69) by @mvolfik
2.21.0 (2025-12-11)
- Add CONNECT tunneling support for HTTP proxy in sandboxed environments (#791) (a27d55a) by @tducret
- Make all
collectionClient.listmethods return value also beasyncIteratorof relevant data (#790) (f855fd4) by @Pijukatel, closes #777 - Generated JSDocs based on the API reference (#797) (85653a1) by @jancurn
- Make storage clients list methods return value also be asyncIterator of relevant data (#803) (c58ce6f) by @Pijukatel, closes #777
- Expose
actorPermissionLevelin Actor client (#809) (513e41c) by @stepskop
2.20.0 (2025-11-20)
- Add redirected actor logs (#769) (a7f4233) by @Pijukatel
- Replace
agentkeepalivewith native Node.js HTTP agents for proxy support (#788) (7d2be0f) by @tducret
- Actor start and run options and doc (#785) (61f91e5) by @michael-apify
- Dynamic imports for certain
node:packages (#767) (0bf8db7) by @barjin - Don't bundle
node:cryptoin the browser bundle (#782) (72a1d3c) by @barjin
2.19.0 (2025-10-20)
- Move restartOnError from Actor to Run options (#760) (8f80f82) by @DaveHanns
2.18.0 (2025-10-09)
- Allowed signature to be passed in kv-store/datasets (#761) (a31e36d) by @gippy
- Add startedBefore and startedAfter to run list (#763) (2345999) by @danpoletaev
2.17.0 (2025-09-11)
- Signed storage URLs avoid adding expiresInSecs to query params (#734) (70aff4f) by @danpoletaev
- Presigned resource urls shouldn't follow
baseUrl(#745) (07b36fb) by @barjin, closes #744
2.16.0 (2025-08-26)
- [breaking] Rename expiresInMillis to expiresInSecs in create storage content URL (#733) (a190b72) by @danpoletaev
2.15.1 (2025-08-20)
- Add recordPublicUrl to KeyValueListItem type (#730) (42dfe64) by @danpoletaev
2.15.0 (2025-08-12)
- Extend status parameter to an array of possible statuses (#723) (0be893f) by @JanHranicky
2.14.0 (2025-08-11)
- Add keyValueStore.getRecordPublicUrl (#725) (d84a03a) by @danpoletaev
2.13.0 (2025-08-06)
- Add new methods Dataset.createItemsPublicUrl & KeyValueStore.createKeysPublicUrl (#720) (62554e4) by @danpoletaev
- Add
eventDatatoWebhookDispatchtype (#714) (351f11f) by @valekjo - Sync
@docusaurusdependencies version [internal] (#715) (3dc9c50) by @katzino - KV store createKeysPublicUrl wrong URL (#724) (a48ec58) by @danpoletaev
2.12.6 (2025-06-30)
- Allow sorting of Actors collection (#708) (562a193) by @protoss70
- Use appropriate timeouts (#704) (b896bf2) by @janbuchar, closes #685
- Rename option for new sortBy parameter (#711) (f45dd03) by @protoss70
2.12.5 (2025-05-28)
- List kv store keys by collection of prefix (#688) (be25137) by @MFori
- Add unlockRequests endpoint to RequestQueue client (#700) (7c52c64) by @drobnikj
- Add missing 'effectivePlatformFeatures', 'createdAt', 'isPaying' to User interface (#691) (e138093) by @metalwarrior665
- Move prettier into
devDependencies(#695) (1ba903a) by @hudson-worden
2.12.4 (2025-05-13)
- Fix
RunCollectionListOptionsstatus type (#681) (8fbcf82) by @MatousMarik - actor: Add missing 'pricingInfos' field to Actor object (#683) (4bd4853) by @metalwarrior665
2.12.3 (2025-04-24)
- DefaultBuild() returns BuildClient (#677) (8ce72a4) by @danpoletaev
2.12.2 (2025-04-14)
- Add support for general resource access (#669) (7deba52) by @tobice
- Add defaultBuild method (#668) (c494b3b) by @danpoletaev
2.12.1 (2025-03-11)
2.11.2 (2025-02-03)
- Add dataset.statistics (#621) (6aeb2b7) by @MFori
- Added getOpenApiSpecification() to BuildClient (#626) (6248b28) by @danpoletaev
2.11.1 (2025-01-10)
- Change type
Build.actorDefinitionstoBuild.actorDefinition(#624) (611f313) by @jirispilka - Add ActorRunPricingInfo type (#623) (8880295) by @janbuchar
2.11.0 (2024-12-16)
- actor-build: Add actorDefinition type for actor build detail, deprecate inputSchema and readme. (#611) (123c2b8) by @drobnikj
- Add
chargemethod to the run client for "pay per event" (#613) (3d9c64d) by @Jkuzz - request-queue: Add queueHasLockedRequests and clientKey into RequestQueueClientListAndLockHeadResult (#617) (f58ce98) by @drobnikj
- actor: Correctly set type for ActorTaggedBuilds (#612) (3bda7ee) by @metalwarrior665
2.10.0 (2024-11-01)
- Add user.updateLimits (#595) (bf97c0f) by @MFori, closes #329
- Allow appending custom parts to the user agent (#602) (d07452b) by @B4nan
2.9.7 (2024-10-14)
2.9.5 (2024-08-19)
- Add Actor Standby types (#569) (d3ba82b) by @jirimoravcik
- Allow
unwindparam toDatasetClient.listItems()to be an array (#576) (7ef3b14) by @fnesveda - (client) Add maxCostPerRun param (#578) (854e776) by @stetizu1
2.9.4 (2024-06-26)
- Add smartlook token to docs build [internal] (#540) (4b408bd) by @HonzaTuron
- Add notifications field to Schedule (#545) (c6f9429) by @m-murasovs
- JavaScript client code examples for platform (#548) (bac3692) by @HonzaTuron
- Added data property to API error object (#559) (3b7c4b7) by @gippy
2.9.2 (2024-02-23)
- Add monthlyUsage() and limits() endpoints to UserClients (#517) (2767c8d) by @tobice
- Parse monthlyUsage.dailyServiceUsages[].date as Date (#519) (980d958) by @tobice
2.9.1 (2024-02-20)
2.9.0 (2024-02-16)
- Add
KeyValueStore.recordExists()method (#510, closes #507) (069d620) by @barjin - Add log() method to BuildClient (#509) (8821df6) by @tobice
- Add
runs()andbuilds()top level endpoints (#468, closes #296) (252d2ac) by @foxt451
- Publish browser bundle (#506) (01f9fe1) by @B4nan
- Update axios to v1.6 (#505, closes #501) (6567e0c) by @B4nan
2.8.6 (2024-02-02)
- (request-queue) Limit payload size for batchAddRequests() (#489, closes #446) (164c9c7) by @drobnikj
- Replace ReadableStream with Readable (#463, closes #240) (6f6deb7) by @foxt451
- Add missing properties to
ActorCollectionCreateOptionstype (#486) (623b516) by @jirimoravcik
2.8.4 (2023-11-20)
2.8.2 (2023-10-30)
- Add how to install javascript Apify client (#440) (b79e463) by @webrdaniel
- (types)
ScheduleCreateOrUpdateDatashould haveidas optional (#276) (e59ff10) by @magne4000
2.8.1 (2023-10-11)
- Add new webhook fields (#426) (44ced4d) by @m-murasovs
- Add delete to runs and builds (#428) (a399663) by @Jkuzz
2.8.0 (2023-09-08)
- Add Actor reboot method (#408) (be21c82) by @jirimoravcik
2.7.2 (2023-08-28)
- Rename APIFY_ACTOR_MAX_ITEMS to ACTOR_MAX_PAID_DATASET_ITEMS (#353) (36d6c20) by @novotnyj
- (runs, builds) Add usage usd into actor run and build types (#355) (a6be0b8) by @drobnikj
- Add shouldInterpolateStrings field to webhook type (#358) (ad1f204) by @valekjo
- Use Actor/Apify env vars instead of
ENV_VARS(#373) (b2743f5) by @jirimoravcik - Added StoreCollectionClient class useful for listing Actors in Apify Store (#395) (5ffd98b) by @drobnikj
2.7.1 (2023-04-06)
2.7.0 (2023-03-14)
- Add support for
maxItemsin run options (#330) (9442187) by @novotnyj - (repo) Repository links (#335) (8c30566) by @drobnikj
- (requestQueue) Request queue v2 features release (#334) (bde2ac7) by @drobnikj
- Add "standard" handing for setStatusMessage (#333) (4dab74a) by @barjin
- Fix isAtHome value in User-Agent header (#286) (5232c1b) by @mvolfik
- (actor) Fix types for actor run (#331) (8440f2f) by @drobnikj
- Improve reading of the version when using bundlers (#332, closes #235) (4ac1ba4) by @vladfrangu
2.6.3 (2023-02-14)
- Updating pull request toolkit config [INTERNAL] (3fc9f85) by @mtrunkat
- Updating pull request toolkit config [INTERNAL] (80008ea) by @mtrunkat
- IsStatusMessageTerminal in RunUpdate interface (#306) (e60d9a6) by @barjin
2.6.2 (2023-01-04)
- Re-export useful types and classes (#285, closes #279) (868c420) by @vladfrangu
Actor.callandTask.callacceptwaitSecsnotwaitForFinish(#283, closes #282) (1ce8ed5) by @vladfrangu- (types) Correct extends clause for Dataset entries (#284, closes #267) (cb07c3a) by @vladfrangu
- Correct docs links for actor env vars, some refactoring (#287) (669d7ac) by @jirimoravcik
- Make ActorUpdateOptions type have optional fields (#288) (46a0e4f) by @metalwarrior665
- Correctly set default client headers (#290) (08eeae1) by @valekjo
2.6.1 (2022-10-13)
- Drop single file support (#257) (2b8b3af) by @valekjo
- Update actor types (#263) (cb57822) by @HonzaTuron
- Add flatten param to Dataset items listing (#264) (0c40ea7) by @Strajk
- Add optional title field to task, schedule, key-value store, dataset, and request queue (#271) (46d625b) by @valekjo
- Add tslib dependency (35d633f) by @B4nan
- Add
defaultRequestQueueIdproperty toActorRuntype (#268) (2a78dde) by @fnesveda
- Add
run.update()method for setting fields on runs. You can update statusMessage of run using this method. - Fix parsing ApifyError for method called with
forceBufferparam totrue. - Fix stream support, related with axios/axios#1045
- Adjust default parallels and retries for batch add requests
- Add methods to list all requests in queue,
requestQueueClient.listRequests()andrequestQueueClient.paginateRequests(). The paginate requests returns async iterator, you can use it:
for await (const page of rqClient.paginateRequests()) {
// Do something with page.items
}
- Fix ActorRun - correct type for
status
- Add
originparam to the last actor/task run endpoints
- Add request queue methods
listAndLockHead(),prolongRequestLock(),deleteRequestLock()
- Add exponential backoff to
batchAddRequests - Add option
minDelayBetweenUnprocessedRequestsRetriesMillistobatchAddRequests
- Fix: Retries in batch requests insert endpoint
- Add batch delete requests method for request queue (for now experimental)
- Add support for
schemaparameter in key-value store and datasetgetOrCreatefunction - Make
RequestQueueClientListItem.methodstrictly typed - Fix: Correct types and validation for
tasks().create - Fix: Add missing override modifier for error cause
- Fix: Updated incorrect RunCollectionClient list status type
- Added support for the (for now experimental)
viewparameter to the dataset items endpoints - For TypeScript users, the type for the fields that end in
At(ex.:createdAt) have been correctly typed as a Date object instead of a string - Add option to set custom timeout for RequestQueue client calls.
- Added
ActorEnvVarCollectionClientandActorEnvVarClient - Add export for
PaginatedListinterface. - Experimental: Add method for request queue batch requests insert endpoint
- For TypeScript users, the input type for Task#start and Task#call is now correctly marked as optional
- For TypeScript users, the input type for Task#start and Task#call have been corrected (these methods expect an optional input of an object, not an object or an array of objects)
- For TypeScript users, the overloads for KeyValueStore#getRecord have been relaxed and their order has been corrected
- For TypeScript users, the
WebhookEventTypetype was corrected to represent its correct value.
- Fix: Unnamed storages can now be created again.
- For TypeScript users, DatasetClients can now take in a generic type parameter that defines the data present in a dataset.
- BREAKING CHANGE: Remove default export for ApifyClient. Migration from v1.x.x to v2.x.x:
// v2.x.x
const { ApifyClient } = require('apify-client');
// v1.x.x
const ApifyClient = require('apify-client');- TypeScript rewrite
- Fix: Exposing token on ApifyClient instance
- Changed passing token using request HTTP header instead of the request parameter for every API calls
- Fix: Exposing token on ApifyClient instance
- Changed passing token using request HTTP header instead of the request parameter for every API calls
- Added new method
.test()to theWebhookClientclass
- Added gracefully parameter for abort run function
- Enabled access to actor run storages via
RunClient
- use new
apify-sharedpackages to reduce bundle size
- Fixed invalid max body length setting thanks to a transitive default in
axios.
- Fixed double stringification of JSON inputs in
.start(),.call()and.metamorph()functions.
- Added missing function serialization to
.metamorph(). See 1.2.0 release.
- Added function serialization to
.start()and.call()function inputs. You can now define input functions as JS functions instead of having to type them out as a string. - Added validation for resource IDs to be non-empty. This is non-breaking and prevents cryptic errors like
We have bad news: there is no API endpoint at this URL.
- Fixed slow parsing of large responses due to a bug in
axios.
- Added timeout, memory, and build parameters to
client.run.resurrect() - Deprecated
disableRedirectoption forkvs.setRecord() - Updated
apify-sharedversion to resolve a sub-dependency vulnerability.
- Fix requests timing out too early due to socket timeouts.
- Fix
.calland.waitForFinishwaiting infinitely withwaitSecs: 0. - Add missing validations to
getOrCreatemethods. - Remove signed URL uploads from
kvs.setRecord()
- Omit query params for direct upload URL calls
- Removed limits on max content/body length.
- Fix
axiossecurity vulnerability by updating version. - Update
owto0.22.0. - Improve docs.
- Removed the
descoption fromkeyValueStoreClient.listKeys()because Apify API does not support it.
- A complete rewrite of the client. See README.
- Removed legacy Apify Crawler methods that are no longer supported by Apify API.
- Added update method for request queues, datasets and key-value stores.
- Added new method
client.acts.resurrectRun()that resurrects finished (even failed) actor run.
bodyandcontentTypeparameters ofclient.tasks.runTask()were deprecated in favor of newinputparameter.- Added new methods to get and update input of actor task -
client.tasks.getInput()andclient.tasks.updateInput().
- Added
simplifiedandskipFailedPagesparameters todatasets.getItems()to support legacy crawler produced datasets.
- Added parameter retryOnStatusCodes to define an array of HTTP status codes on which
client retries the request. Default value is
[429](only rate limit exceeded).
- Fix of non-JSON crawler execution results retrieval
- Added support for clientKey parameter to request queue endpoints.
- Fixed a bug where last retry stats would not be saved correctly.
- Client now retries request in a case of an invalid JSON response (incomplete response payload).
apifyClient.stats.rateLimitErrorsis now anArrayand tracks errors per retry count.
- Added
client.tasks.listWebhooks()to list task webhooks.
- Added
client.webhooksproviding access to Apify webhooks. - Added
client.webhookDispatchesproviding access to Apify webhook dispatches. - Added
client.acts.listWebhooks()to list actor webhooks.
- Added exponential backoff to
datasets.getItems()in a case of "Unexpected end of JSON input" error
- Added more details to
ApifyClientErrorfor easier debugging - Added
client.acts.metamorphRun(), see documentation for more information.
- Improve
.toString()message ofApifyClientError.
- Added
clean,skipHiddenandskipEmptyparameters toclient.datasets.getItems()method.
- Increased number of retries for request queue endpoints that may be slower to scale up.
- Fixed getActorVersion method, now returns
nullif version does not exist
- Added
ApifyClient.statsobject that collects various statistics of the API client
- Methods for Apify storages (i.e. key-value stores, datasets and request queues) that use other than GET HTTP method now require token parameter.
tasks.runTask()method now allows to overload input and options from actor task configuration.
- All key-value store records with content type
text/*are now parsed into string. - Option
promiseto customize Promise implementation is not supported any more. - All methods now use native promises instead of Bluebird implementation. Make sure that your code doesn't depend on Bluebird.
- All Boolean parameters of v2 endpoints (Actor, Storages) are now truly Boolean and don't accept
1astrue. Legacy crawler API hasn't changed. - Added support for actor versions API.
- Endpoint to get items from dataset now passes
encoding: nullto support XSLX format.
- Added support for actor tasks API.
- Requests repeated more than
expBackOffMaxRepeats/2times are logged.
- Added
client.tasksproviding access to Apify tasks.
- Upgraded NPM dependencies
- Renamed
ApifyErrortoApifyClientError
- Added support for more content types to
utils.parseBody().
- Added support for pre-serialized data (strings) to
Apify.datasets.putItems().
- Added
executionIdparameter to getCrawlerSettings method. You can get crawler settings for specific execution with that.
- Thrown error in a case of failed request now contains details such as
URL,method, ... .
- All date fields (ending with
At) such asmodifiedAt,createdAt, etc. are now parsed toDateobject.
- Added
client.requestQueuesproviding access to Apify Request Queue. - RequestQueue / KeyValueStore / Dataset now support
[username]~[store-name]instead of store ID.
- Added
client.users.getUser()method that retrieves own accout details including usage and limits.
- WARNING: Method
datasets.getItems()now returns object PaginationList with items wrapped inside instead of plain items array. This helps to iterate through all the items using pagination. This change is not backward compatible!
- Support for Function type added to
utils.checkParamOrThrow()
- Updated GitHub repo and Travis CI links
- Datasets group addded