{"id":26661519,"url":"https://github.com/simatwa/youtube-downloader-api","last_synced_at":"2026-03-04T00:40:49.574Z","repository":{"id":300342316,"uuid":"902820955","full_name":"Simatwa/youtube-downloader-api","owner":"Simatwa","description":"A REST-API that provide endpoints for searching, extracting metadata and downloading YouTube videos in mp4, webm, m4a and mp3 formats in different qualities including 8k.","archived":false,"fork":false,"pushed_at":"2025-08-03T19:21:29.000Z","size":252,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-03T21:16:34.644Z","etag":null,"topics":["fastapi","youtube-api","youtube-downloader","youtube-downloader-api","youtube-downloader-app","youtube-downloader-python","yt-dlp","yt-dlp-bonus"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Simatwa.png","metadata":{"files":{"readme":"docs/README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-12-13T10:37:07.000Z","updated_at":"2025-08-03T19:21:32.000Z","dependencies_parsed_at":"2025-06-21T06:27:46.612Z","dependency_job_id":"f1c996db-6911-4dfa-bc05-b664e96ecd96","html_url":"https://github.com/Simatwa/youtube-downloader-api","commit_stats":null,"previous_names":["simatwa/youtube-downloader-api"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/Simatwa/youtube-downloader-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simatwa%2Fyoutube-downloader-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simatwa%2Fyoutube-downloader-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simatwa%2Fyoutube-downloader-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simatwa%2Fyoutube-downloader-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Simatwa","download_url":"https://codeload.github.com/Simatwa/youtube-downloader-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simatwa%2Fyoutube-downloader-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275448629,"owners_count":25466653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-16T02:00:10.229Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["fastapi","youtube-api","youtube-downloader","youtube-downloader-api","youtube-downloader-app","youtube-downloader-python","yt-dlp","yt-dlp-bonus"],"created_at":"2025-03-25T13:18:47.676Z","updated_at":"2026-03-04T00:40:49.562Z","avatar_url":"https://github.com/Simatwa.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eYouTube Video Downloader API\u003c/h1\u003e\n\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"LICENSE\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/static/v1?logo=license\u0026color=Blue\u0026message=Unlicense\u0026label=License\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/Simatwa/youtube-downloader-api/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/Simatwa/youtube-downloader-api?label=Release\u0026logo=github\" alt=\"Latest release\"\u003e\u003c/img\u003e\u003c/a\u003e\n\u003c!--\n\u003ca href=\"https://github.com/Simatwa/youtube-downloader-api/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/release-date/Simatwa/youtube-downloader-api?label=Release date\u0026logo=github\" alt=\"release date\"\u003e\u003c/img\u003e\u003c/a\u003e\n--\u003e\n\u003ca href=\"https://github.com/psf/black\"\u003e\u003cimg alt=\"Black\" src=\"https://img.shields.io/badge/code%20style-black-000000.svg\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/Simatwa/youtube-downloader-api\"\u003e\u003cimg src=\"https://hits.sh/github.com/Simatwa/youtube-downloader-api.svg?label=Total%20hits\u0026logo=dotenv\" alt=\"Total hits\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Overview\n\nA REST-API that provide endpoints for searching, extracting metadata and downloading YouTube videos in mp4, webm, m4a and mp3 formats in different qualities.\n\n## Prerequisites\n\n- [Python version 3.10 or higher](https://python.org)\n- [Git](https://git-scm.com/)\n\n## Installation Guide\n\nFollow these steps to install and configure the YouTube video downloader:\n\n### Step 1: Clone Repository\n\nFirst, clone the repository using the following command:\n\n```sh\ngit clone https://github.com/Simatwa/youtube-downloader-api.git\ncd youtube-downloader\n```\n\n### Step 2: Set Up Virtual Environment\n\nNext, create and activate a virtual environment:\n\n```sh\npip install uv\nuv venv\nsource .venv/bin/activate\n```\n\nAfter activating the virtual environment, install the required dependencies:\n\n```sh\nuv pip install -r requirements-all.txt\n```\n\n\u003e [!TIP]\n\u003e Its good to update yt-dlp version `uv pip install -U yt-dlp`\n\n### Step 3: Configure Environment Variables\n\nCopy any of [configs/env/*](../configs/env/) file to the root directory of the project and rename it to `.env`. Edit the `.env` file to set up your environment variables according to your needs.\n\n\u003e [!WARNING]\n\u003e Some of the settings in the `.env` file are very sensitive to the app. A slight change can have a significant impact on the apps's functionality. Ensure you're in good knowledge of the changes you will be making.\n\n### Step 4: Start the Server\n\nFinally, start the server using the following command:\n\n```sh\npython -m app run\n```\n\nThe docs will be accessible from  \u003chttp://localhost:8000/api/docs\u003e and redocs from \u003chttp://localhost:8000/api/redoc\u003e\n\n\u003e [!TIP]\n\u003e For a more smoother control over the server's startup, consider using the FastAPI's cli.\n\u003e Running `$ fastapi run app` will equally fire-up the server.\n\u003e For more help info such as changing **host** and **port**, you can simply run `$ fastapi run --help`.\n\n## Serving frontend contents\n\nIn order to serve frontend contents, you have to pass directory containing the contents to the app using `frontend_dir` key in the [configuration file](../configs/env/example).\n\n\u003e [!NOTE]\n\u003e The frontend directory should contain `index.html` file.\n\n## Optimizing Server Performance\n\nTo improve server performance and minimize load, I recommend setting up a separate server for handling static contents (audios and videos). To do this:\n\n1. Execute the [`static-server`](../servers/static.py) file.\n2. Configure the API using the `static_server_url` key with the URL of the static server.\n\n\u003e [!IMPORTANT]\n\u003e It's recommened to use a [uWSGI](https://uwsgi-docs.readthedocs.io/en/latest/) to serve the static contents at production environment. This [uwsgi.sh](../uwsgi.sh) file might come handy in this.\n\n## Troubleshooting\n\n### Authorization Issues\n\nYouTube flags requests without proper authorization. To work around this issue:\n\n1. Use cookies and po_token as authorized workarounds.\n2. Alternatively, use a whitelisted proxy.\n\n\u003e [!NOTE]\n\u003e While using a proxy is a straightforward solution, there's no guarantee that the request will go through successfully.\n\n## Utility Servers\n\n1. [Static Server](../servers/static.py)\n2. [Proxy Server](../servers/proxy.py)\n\n## Web-Interfaces\n\nThe following projects provide web-interfaces for interacting with Youtube-Downloader-API\n\n| Index  |  🎁 Projects  | ⭐ Stars                       |\n|--------| ------------- |-------------------------------|\n| 0      | [y2mate-clone](https://github.com/Simatwa/y2mate-clone) |  [![Stars](https://img.shields.io/github/stars/Simatwa/y2mate-clone?style=flat-square\u0026labelColor=343b41)](https://github.com/Simatwa/y2mate-clone/stargazers) |\n\n_Feel free to add another web-interface to this list._\n\n## Additional Resources\n\nFor detailed information on extracting PO Tokens, refer to the following resource:\n\n[How to extract PO Token](https://github.com/yt-dlp/yt-dlp/wiki/Extractors#po-token-guide)\n\n## License\n\n- [x] [The Unlicense](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimatwa%2Fyoutube-downloader-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimatwa%2Fyoutube-downloader-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimatwa%2Fyoutube-downloader-api/lists"}