{"id":13502176,"url":"https://github.com/scrapinghub/dateparser","last_synced_at":"2026-02-04T17:10:57.617Z","repository":{"id":23713935,"uuid":"27086567","full_name":"scrapinghub/dateparser","owner":"scrapinghub","description":"python parser for human readable dates","archived":false,"fork":false,"pushed_at":"2026-01-30T10:46:54.000Z","size":5713,"stargazers_count":2768,"open_issues_count":358,"forks_count":488,"subscribers_count":126,"default_branch":"master","last_synced_at":"2026-01-31T03:05:50.661Z","etag":null,"topics":["hacktoberfest"],"latest_commit_sha":null,"homepage":"https://dateparser.readthedocs.org/en/latest/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scrapinghub.png","metadata":{"files":{"readme":"README.rst","changelog":"HISTORY.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"docs/supported_locales.rst","governance":null,"roadmap":null,"authors":"AUTHORS.rst","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-11-24T17:30:12.000Z","updated_at":"2026-01-29T23:56:01.000Z","dependencies_parsed_at":"2023-01-14T13:23:28.069Z","dependency_job_id":"6177cadc-a76b-47e0-b3da-5ed3313ba47a","html_url":"https://github.com/scrapinghub/dateparser","commit_stats":{"total_commits":1229,"total_committers":144,"mean_commits":8.534722222222221,"dds":0.8738812042310822,"last_synced_commit":"748e48aec2aa87a2ad95fe4e0ec3216fcfaae1ab"},"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/scrapinghub/dateparser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scrapinghub%2Fdateparser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scrapinghub%2Fdateparser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scrapinghub%2Fdateparser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scrapinghub%2Fdateparser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scrapinghub","download_url":"https://codeload.github.com/scrapinghub/dateparser/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scrapinghub%2Fdateparser/sbom","scorecard":{"id":806042,"data":{"date":"2025-08-11","repo":{"name":"github.com/scrapinghub/dateparser","commit":"0667cb357185317df55636c34af845e3aca5875d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.9,"checks":[{"name":"Code-Review","score":7,"reason":"Found 23/30 approved changesets -- score normalized to 7","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":"Maintained","score":9,"reason":"6 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 9","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":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: found token with 'none' permissions: .github/workflows/cifuzz.yml:1","Warn: no topLevel permission defined: .github/workflows/main.yml:1","Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Info: no jobLevel write permissions found"],"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":"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/cifuzz.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/scrapinghub/dateparser/cifuzz.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/cifuzz.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/scrapinghub/dateparser/cifuzz.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/cifuzz.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/scrapinghub/dateparser/cifuzz.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/cifuzz.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/scrapinghub/dateparser/cifuzz.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/scrapinghub/dateparser/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/scrapinghub/dateparser/main.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/main.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/scrapinghub/dateparser/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/scrapinghub/dateparser/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/scrapinghub/dateparser/publish.yml/master?enable=pin","Warn: pipCommand not pinned by hash: fuzzing/build.sh:2","Warn: pipCommand not pinned by hash: .github/workflows/main.yml:45","Warn: pipCommand not pinned by hash: .github/workflows/main.yml:46","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:19","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:20","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   5 pipCommand 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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Fuzzing","score":10,"reason":"project is fuzzed","details":["Info: OSSFuzz integration found","Info: PythonAtherisFuzzer integration found: fuzzing/dateparser_fuzzer.py:4","Info: PythonAtherisFuzzer integration found: fuzzing/fuzz_helpers.py:7"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"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":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for 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":"Vulnerabilities","score":0,"reason":"10 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2024-4 / GHSA-2mqj-m65w-jghx","Warn: Project is vulnerable to: PYSEC-2023-165 / GHSA-cwvm-v4w8-q58c","Warn: Project is vulnerable to: PYSEC-2022-42992 / GHSA-hcpj-qp55-gfph","Warn: Project is vulnerable to: PYSEC-2023-137 / GHSA-pr76-5cm5-w9cj","Warn: Project is vulnerable to: PYSEC-2023-161 / GHSA-wfm5-v35h-vwf4","Warn: Project is vulnerable to: PYSEC-2014-14 / GHSA-652x-xj99-gmcc","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2014-13 / GHSA-cfj3-7x9c-4p3h","Warn: Project is vulnerable to: PYSEC-2018-28 / GHSA-x84v-xcm2-53pg"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":5,"reason":"SAST tool is not run on all commits -- score normalized to 5","details":["Warn: 12 commits out of 24 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"}}]},"last_synced_at":"2025-08-23T11:47:46.052Z","repository_id":23713935,"created_at":"2025-08-23T11:47:46.052Z","updated_at":"2025-08-23T11:47:46.052Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29091318,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-04T03:31:03.593Z","status":"ssl_error","status_checked_at":"2026-02-04T03:29:50.742Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["hacktoberfest"],"created_at":"2024-07-31T22:02:04.879Z","updated_at":"2026-02-04T17:10:57.611Z","avatar_url":"https://github.com/scrapinghub.png","language":"Python","readme":".. Note that we use raw HTML in the header section because centering images and paragraphs is not supported in Github (https://github.com/github/markup/issues/163)\n\n.. raw:: html\n\n    \u003ch1 align=\"center\"\u003e\n        \u003cbr/\u003e\n        \u003ca href=\"https://github.com/scrapinghub/dateparser\"\u003e\n            \u003cimg src=\"https://raw.githubusercontent.com/scrapinghub/dateparser/master/artwork/dateparser-logo.png\" alt=\"Dateparser\" width=\"500\"\u003e\n        \u003c/a\u003e\n        \u003cbr/\u003e\n    \u003c/h1\u003e\n\n    \u003ch3 align=\"center\"\u003ePython parser for human readable dates\u003c/h4\u003e\n\n    \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://pypi.python.org/pypi/dateparser\"\u003e\n            \u003cimg src=\"https://img.shields.io/pypi/dm/dateparser.svg\" alt=\"PyPI - Downloads\"\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://pypi.python.org/pypi/dateparser\"\u003e\n            \u003cimg src=\"https://img.shields.io/pypi/v/dateparser.svg\" alt=\"PypI - Version\"\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://codecov.io/gh/scrapinghub/dateparser\"\u003e\n            \u003cimg src=\"https://codecov.io/gh/scrapinghub/dateparser/branch/master/graph/badge.svg\" alt=\"Code Coverage\"\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/scrapinghub/dateparser/actions\"\u003e\n            \u003cimg src=\"https://github.com/scrapinghub/dateparser/workflows/Build/badge.svg\" alt=\"Github - Build\"\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://dateparser.readthedocs.org/en/latest/?badge=latest\"\u003e\n            \u003cimg src=\"https://readthedocs.org/projects/dateparser/badge/?version=latest\" alt=\"Readthedocs - Docs\"\u003e\n        \u003c/a\u003e\n    \u003c/p\u003e\n\n    \u003cp align=\"center\"\u003e\n        \u003ca href=\"#key-features\"\u003eKey Features\u003c/a\u003e •\n        \u003ca href=\"#how-to-use\"\u003eHow To Use\u003c/a\u003e •\n        \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e •\n        \u003ca href=\"#common-use-cases\"\u003eCommon use cases\u003c/a\u003e •\n        \u003ca href=\"#you-may-also-like\"\u003eYou may also like...\u003c/a\u003e •\n        \u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\n    \u003c/p\u003e\n\n\nKey Features\n------------\n\n-  Support for almost every existing date format: absolute dates,\n   relative dates (``\"two weeks ago\"`` or ``\"tomorrow\"``), timestamps,\n   etc.\n-  Support for more than `200 language\n   locales \u003chttps://dateparser.readthedocs.io/en/latest/supported_locales.html\u003e`__.\n-  Language autodetection\n-  Customizable behavior through\n   `settings \u003chttps://dateparser.readthedocs.io/en/latest/settings.html\u003e`__.\n-  Support for `non-Gregorian calendar\n   systems \u003chttps://dateparser.readthedocs.io/en/latest/introduction.html#supported-calendars\u003e`__.\n-  Support for dates with timezones abbreviations or UTC offsets\n   (``\"August 14, 2015 EST\"``, ``\"21 July 2013 10:15 pm +0500\"``...)\n-  `Search\n   dates \u003chttps://dateparser.readthedocs.io/en/latest/introduction.html#search-for-dates-in-longer-chunks-of-text\u003e`__\n   in longer texts.\n-  Time span detection for expressions like \"past month\", \"last week\".\n\nOnline demo\n-----------\n\nDo you want to try it out without installing any dependency? Now you can test\nit quickly by visiting `this online demo \u003chttps://dateparser-demo.netlify.app/\u003e`__!\n\n\n\nHow To Use\n----------\n\nThe most straightforward way to parse dates with **dateparser** is to\nuse the ``dateparser.parse()`` function, that wraps around most of the\nfunctionality of the module.\n\n.. code:: python\n\n    \u003e\u003e\u003e import dateparser\n\n    \u003e\u003e\u003e dateparser.parse('Fri, 12 Dec 2014 10:55:50')\n    datetime.datetime(2014, 12, 12, 10, 55, 50)\n\n    \u003e\u003e\u003e dateparser.parse('1991-05-17')\n    datetime.datetime(1991, 5, 17, 0, 0)\n\n    \u003e\u003e\u003e dateparser.parse('In two months')  # today is 1st Aug 2020\n    datetime.datetime(2020, 10, 1, 11, 12, 27, 764201)\n\n    \u003e\u003e\u003e dateparser.parse('1484823450')  # timestamp\n    datetime.datetime(2017, 1, 19, 10, 57, 30)\n\n    \u003e\u003e\u003e dateparser.parse('January 12, 2012 10:00 PM EST')\n    datetime.datetime(2012, 1, 12, 22, 0, tzinfo=\u003cStaticTzInfo 'EST'\u003e)\n\nAs you can see, **dateparser** works with different date formats, but it\ncan also be used directly with strings in different languages:\n\n.. code:: python\n\n    \u003e\u003e\u003e dateparser.parse('Martes 21 de Octubre de 2014')  # Spanish (Tuesday 21 October 2014)\n    datetime.datetime(2014, 10, 21, 0, 0)\n\n    \u003e\u003e\u003e dateparser.parse('Le 11 Décembre 2014 à 09:00')  # French (11 December 2014 at 09:00)\n    datetime.datetime(2014, 12, 11, 9, 0)\n\n    \u003e\u003e\u003e dateparser.parse('13 января 2015 г. в 13:34')  # Russian (13 January 2015 at 13:34)\n    datetime.datetime(2015, 1, 13, 13, 34)\n\n    \u003e\u003e\u003e dateparser.parse('1 เดือนตุลาคม 2005, 1:00 AM')  # Thai (1 October 2005, 1:00 AM)\n    datetime.datetime(2005, 10, 1, 1, 0)\n\n    \u003e\u003e\u003e dateparser.parse('yaklaşık 23 saat önce')  # Turkish (23 hours ago), current time: 12:46\n    datetime.datetime(2019, 9, 7, 13, 46)\n\n    \u003e\u003e\u003e dateparser.parse('2小时前')  # Chinese (2 hours ago), current time: 22:30\n    datetime.datetime(2018, 5, 31, 20, 30)\n\nYou can control multiple behaviors by using the ``settings`` parameter:\n\n.. code:: python\n\n    \u003e\u003e\u003e dateparser.parse('2014-10-12', settings={'DATE_ORDER': 'YMD'})\n    datetime.datetime(2014, 10, 12, 0, 0)\n\n    \u003e\u003e\u003e dateparser.parse('2014-10-12', settings={'DATE_ORDER': 'YDM'})\n    datetime.datetime(2014, 12, 10, 0, 0)\n\n    \u003e\u003e\u003e dateparser.parse('1 year', settings={'PREFER_DATES_FROM': 'future'})  # Today is 2020-09-23\n    datetime.datetime(2021, 9, 23, 0, 0)\n\n    \u003e\u003e\u003e dateparser.parse('tomorrow', settings={'RELATIVE_BASE': datetime.datetime(1992, 1, 1)})\n    datetime.datetime(1992, 1, 2, 0, 0)\n\nTo see more examples on how to use the ``settings``, check the `settings\nsection \u003chttps://dateparser.readthedocs.io/en/latest/settings.html\u003e`__\nin the docs.\n\nFalse positives\n^^^^^^^^^^^^^^^\n\n**dateparser** will do its best to return a date, dealing with multiple formats and different locales.\nFor that reason it is important that the input is a valid date, otherwise it could return false positives.\n\nTo reduce the possibility of receiving false positives, make sure that:\n\n- The input string is a valid date and doesn't contain any other words or numbers.\n- If you know the language or languages beforehand, you add them through the ``languages`` or ``locales`` properties.\n\n\nOn the other hand, if you want to exclude any of the default parsers\n(``timestamp``, ``relative-time``...) or change the order in which they\nare executed, you can do so through the\n`settings PARSERS \u003chttps://dateparser.readthedocs.io/en/latest/usage.html#handling-incomplete-dates\u003e`_.\n\nInstallation\n------------\n\nDateparser supports Python 3.10+. You can install it by doing:\n\n::\n\n    $ pip install dateparser\n\nIf you want to use the jalali or hijri calendar, you need to install the\n``calendars`` extra:\n\n::\n\n    $ pip install dateparser[calendars]\n\nCommon use cases\n----------------\n\n**dateparser** can be used for a wide variety of purposes,\nbut it stands out when it comes to:\n\nConsuming data from different sources:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n-  **Scraping**: extract dates from different places with several\n   different formats and languages\n-  **IoT**: consuming data coming from different sources with different\n   date formats\n-  **Tooling**: consuming dates from different logs / sources\n-  **Format transformations**: when transforming dates coming from\n   different files (PDF, CSV, etc.) to other formats (database, etc).\n\nOffering natural interaction with users:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n-  **Tooling and CLI**: allow users to write “3 days ago” to retrieve\n   information.\n-  **Search engine**: allow people to search by date in an easy /\n   natural format.\n-  **Bots**: allow users to interact with a bot easily\n\nYou may also like...\n--------------------\n\n-  `price-parser \u003chttps://github.com/scrapinghub/price-parser/\u003e`__ - A\n   small library for extracting price and currency from raw text\n   strings.\n-  `number-parser \u003chttps://github.com/scrapinghub/number-parser/\u003e`__ -\n   Library to convert numbers written in the natural language to it's\n   equivalent numeric forms.\n-  `Scrapy \u003chttps://github.com/scrapy/scrapy/\u003e`__ - Web crawling and web\n   scraping framework\n\nLicense\n-------\n\n`BSD3-Clause \u003chttps://github.com/scrapinghub/dateparser/blob/master/LICENSE\u003e`__\n","funding_links":[],"categories":["Python","Date \u0026 Time Utilities","Data Format \u0026 I/O","Specialized Tools","Date and Time"],"sub_categories":["For Python","Text Processing"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscrapinghub%2Fdateparser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscrapinghub%2Fdateparser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscrapinghub%2Fdateparser/lists"}