{"id":18710660,"url":"https://github.com/apify/apify-client-python","last_synced_at":"2026-01-30T12:07:57.174Z","repository":{"id":40643961,"uuid":"164647835","full_name":"apify/apify-client-python","owner":"apify","description":"Apify API client for Python","archived":false,"fork":false,"pushed_at":"2026-01-26T15:26:28.000Z","size":5831,"stargazers_count":88,"open_issues_count":17,"forks_count":14,"subscribers_count":8,"default_branch":"master","last_synced_at":"2026-01-26T22:43:24.787Z","etag":null,"topics":["api","apify","client","python","scraping"],"latest_commit_sha":null,"homepage":"https://docs.apify.com/api/client/python/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apify.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-01-08T12:49:09.000Z","updated_at":"2026-01-26T15:26:55.000Z","dependencies_parsed_at":"2025-12-18T23:03:10.516Z","dependency_job_id":null,"html_url":"https://github.com/apify/apify-client-python","commit_stats":{"total_commits":115,"total_committers":10,"mean_commits":11.5,"dds":0.5043478260869565,"last_synced_commit":"9b1ce58e85d8731fa0ccf75061d14594937622cf"},"previous_names":[],"tags_count":201,"template":false,"template_full_name":null,"purl":"pkg:github/apify/apify-client-python","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apify%2Fapify-client-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apify%2Fapify-client-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apify%2Fapify-client-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apify%2Fapify-client-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apify","download_url":"https://codeload.github.com/apify/apify-client-python/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apify%2Fapify-client-python/sbom","scorecard":{"id":202526,"data":{"date":"2025-08-11","repo":{"name":"github.com/apify/apify-client-python","commit":"521868cd6d2187d270b5afa742e47260b1968fcc"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.2,"checks":[{"name":"Code-Review","score":4,"reason":"Found 12/27 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_async_docstrings_check.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/_async_docstrings_check.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_async_docstrings_check.yaml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/_async_docstrings_check.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/_async_docstrings_check.yaml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/_async_docstrings_check.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build_and_deploy_docs.yaml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/build_and_deploy_docs.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build_and_deploy_docs.yaml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/build_and_deploy_docs.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build_and_deploy_docs.yaml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/build_and_deploy_docs.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build_and_deploy_docs.yaml:58: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/build_and_deploy_docs.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build_and_deploy_docs.yaml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/build_and_deploy_docs.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build_and_deploy_docs.yaml:75: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/build_and_deploy_docs.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build_and_deploy_docs.yaml:80: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/build_and_deploy_docs.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/check_pr_title.yaml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/check_pr_title.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pre_release.yaml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/pre_release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pre_release.yaml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/pre_release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pre_release.yaml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/pre_release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pre_release.yaml:86: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/pre_release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pre_release.yaml:94: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/pre_release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pre_release.yaml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/pre_release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pre_release.yaml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/pre_release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pre_release.yaml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/pre_release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:93: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:112: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:120: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:54: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:70: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:78: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/run_code_checks.yaml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/run_code_checks.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/run_code_checks.yaml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/run_code_checks.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/run_code_checks.yaml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/run_code_checks.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/run_code_checks.yaml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/run_code_checks.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/run_code_checks.yaml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/run_code_checks.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/update_new_issue.yaml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/apify/apify-client-python/update_new_issue.yaml/master?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/build_and_deploy_docs.yaml:38","Warn: npmCommand not pinned by hash: .github/workflows/build_and_deploy_docs.yaml:39","Info:   0 out of   9 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  25 third-party GitHubAction dependencies pinned","Info:   0 out of   2 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/build_and_deploy_docs.yaml:18","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/pre_release.yaml:79","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release.yaml:105","Warn: no topLevel permission defined: .github/workflows/_async_docstrings_check.yaml:1","Warn: no topLevel permission defined: .github/workflows/build_and_deploy_docs.yaml:1","Warn: no topLevel permission defined: .github/workflows/check_pr_title.yaml:1","Warn: no topLevel permission defined: .github/workflows/pre_release.yaml:1","Warn: no topLevel permission defined: .github/workflows/release.yaml:1","Warn: no topLevel permission defined: .github/workflows/run_code_checks.yaml:1","Warn: no topLevel permission defined: .github/workflows/update_new_issue.yaml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Branch-Protection","score":5,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Warn: 'branch protection settings apply to administrators' is disabled on branch 'master'","Warn: 'stale review dismissal' is disabled on branch 'master'","Warn: required approving review count is 1 on branch 'master'","Warn: codeowners review is not required on branch 'master'","Warn: 'last push approval' is disabled on branch 'master'","Warn: no status checks found to merge onto branch 'master'","Info: PRs are required in order to make changes on branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/pre_release.yaml:74"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 15 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":7,"reason":"3 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-xffm-g5w8-qvg7","Warn: Project is vulnerable to: GHSA-4v9v-hfq4-rm2v","Warn: Project is vulnerable to: GHSA-9jgg-88mc-972h"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-16T23:04:53.594Z","repository_id":40643961,"created_at":"2025-08-16T23:04:53.594Z","updated_at":"2025-08-16T23:04:53.594Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28912314,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T11:55:24.701Z","status":"ssl_error","status_checked_at":"2026-01-30T11:54:13.194Z","response_time":66,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","apify","client","python","scraping"],"created_at":"2024-11-07T12:35:11.697Z","updated_at":"2026-01-30T12:07:57.168Z","avatar_url":"https://github.com/apify.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=center\u003eApify API client for Python\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://badge.fury.io/py/apify-client\" rel=\"nofollow\"\u003e\u003cimg src=\"https://badge.fury.io/py/apify-client.svg\" alt=\"PyPI package version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/apify-client/\" rel=\"nofollow\"\u003e\u003cimg src=\"https://img.shields.io/pypi/dm/apify-client\" alt=\"PyPI package downloads\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/apify/apify-client-python\"\u003e\u003cimg src=\"https://codecov.io/gh/apify/apify-client-python/graph/badge.svg?token=TYQQWYYZ7A\" alt=\"Codecov report\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/apify-client/\" rel=\"nofollow\"\u003e\u003cimg src=\"https://img.shields.io/pypi/pyversions/apify-client\" alt=\"PyPI Python version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.gg/jyEM2PRvMU\" rel=\"nofollow\"\u003e\u003cimg src=\"https://img.shields.io/discord/801163717915574323?label=discord\" alt=\"Chat on Discord\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nThe Apify API Client for Python is the official library to access the [Apify API](https://docs.apify.com/api/v2) from your Python applications. It provides useful features like automatic retries and convenience functions to improve your experience with the Apify API.\n\nIf you want to develop Apify Actors in Python, check out the [Apify SDK for Python](https://docs.apify.com/sdk/python) instead.\n\n## Installation\n\nRequires Python 3.10+\n\nYou can install the package from its [PyPI listing](https://pypi.org/project/apify-client). To do that, simply run `pip install apify-client` in your terminal.\n\n## Usage\n\nFor usage instructions, check the documentation on [Apify Docs](https://docs.apify.com/api/client/python/).\n\n## Quick Start\n\n```python\nfrom apify_client import ApifyClient\n\napify_client = ApifyClient('MY-APIFY-TOKEN')\n\n# Start an Actor and wait for it to finish\nactor_call = apify_client.actor('john-doe/my-cool-actor').call()\n\n# Fetch results from the Actor's default dataset\ndataset_items = apify_client.dataset(actor_call['defaultDatasetId']).list_items().items\n```\n\n## Features\n\nBesides greatly simplifying the process of querying the Apify API, the client provides other useful features.\n\n### Automatic parsing and error handling\n\nBased on the endpoint, the client automatically extracts the relevant data and returns it in the expected format. Date strings are automatically converted to `datetime.datetime` objects. For exceptions, we throw an `ApifyApiError`, which wraps the plain JSON errors returned by API and enriches them with other context for easier debugging.\n\n### Retries with exponential backoff\n\nNetwork communication sometimes fails. The client will automatically retry requests that failed due to a network error, an internal error of the Apify API (HTTP 500+) or rate limit error (HTTP 429). By default, it will retry up to 8 times. First retry will be attempted after ~500ms, second after ~1000ms and so on. You can configure those parameters using the `max_retries` and `min_delay_between_retries_millis` options of the `ApifyClient` constructor.\n\n### Support for asynchronous usage\n\nStarting with version 1.0.0, the package offers an asynchronous version of the client, [`ApifyClientAsync`](https://docs.apify.com/api/client/python), which allows you to work with the Apify API in an asynchronous way, using the standard `async`/`await` syntax.\n\n### Convenience functions and options\n\nSome actions can't be performed by the API itself, such as indefinite waiting for an Actor run to finish (because of network timeouts). The client provides convenient `call()` and `wait_for_finish()` functions that do that. Key-value store records can be retrieved as objects, buffers or streams via the respective options, dataset items can be fetched as individual objects or serialized data and we plan to add better stream support and async iterators.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapify%2Fapify-client-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapify%2Fapify-client-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapify%2Fapify-client-python/lists"}