{"id":47529009,"url":"https://github.com/zcaceres/spotify-cli","last_synced_at":"2026-05-04T04:01:34.872Z","repository":{"id":344647783,"uuid":"1181894865","full_name":"zcaceres/spotify-cli","owner":"zcaceres","description":"Control Spotify from your AI Agent, easily and securely","archived":false,"fork":false,"pushed_at":"2026-03-20T21:10:06.000Z","size":353,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-28T02:34:13.263Z","etag":null,"topics":["ai-agents","bun","cli","command-line","json","music","oauth2","pkce","playback","spotify","spotify-api","typescript"],"latest_commit_sha":null,"homepage":"https://spotify-cli.zach.dev/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zcaceres.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-14T19:12:36.000Z","updated_at":"2026-03-23T19:26:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zcaceres/spotify-cli","commit_stats":null,"previous_names":["zcaceres/spotify-cli"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/zcaceres/spotify-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcaceres%2Fspotify-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcaceres%2Fspotify-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcaceres%2Fspotify-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcaceres%2Fspotify-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zcaceres","download_url":"https://codeload.github.com/zcaceres/spotify-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zcaceres%2Fspotify-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290740,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"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":["ai-agents","bun","cli","command-line","json","music","oauth2","pkce","playback","spotify","spotify-api","typescript"],"created_at":"2026-03-27T20:52:47.042Z","updated_at":"2026-05-04T04:01:34.864Z","avatar_url":"https://github.com/zcaceres.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# spotify-cli\n\n[![CI](https://github.com/zcaceres/spotify-cli/actions/workflows/ci.yml/badge.svg)](https://github.com/zcaceres/spotify-cli/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)\n![Version](https://img.shields.io/badge/version-0.4.0-blue)\n\nSecure, agent (and human) friendly CLI for playback, search, playlists, and library management. JSON output. PKCE auth.\n\n**[Documentation](https://spotify-cli.zach.dev/)** · **[Command Reference](https://spotify-cli.zach.dev/commands)** · **[Releases](https://github.com/zcaceres/spotify-cli/releases)**\n\n## Quick start\n\n### Install\n\nDownload the latest binary for your platform from [Releases](https://github.com/zcaceres/spotify-cli/releases):\n\n```bash\nchmod +x spotify-darwin-arm64\nxattr -d com.apple.quarantine spotify-darwin-arm64  # macOS only\nsudo mv spotify-darwin-arm64 /usr/local/bin/spotify\n```\n\nOr run from source with [Bun](https://bun.sh):\n\n```bash\ngit clone https://github.com/zcaceres/spotify-cli.git\ncd spotify-cli \u0026\u0026 bun install\nbun run src/cli.ts \u003ccommand\u003e  # instead of `spotify \u003ccommand\u003e`\n```\n\n### Set up a Spotify app\n\n1. Go to [developer.spotify.com/dashboard](https://developer.spotify.com/dashboard)\n2. Click **Create App**, set redirect URI to `http://127.0.0.1:8888/callback`\n3. Copy the **Client ID**\n\n### Log in\n\n```bash\nspotify login --client-id \u003cyour-client-id\u003e\n```\n\n### Try it\n\n```bash\nspotify now                                    # what's playing\nspotify search \"bohemian rhapsody\" --type track # search\nspotify play --uri spotify:track:6rqhFgbbKwnb9MLmUQDhG6\nspotify track saved --limit 5 | jq '.items[].track.name'  # pipe JSON anywhere\n```\n\n## Features\n\n- **42 commands** — playback, search, library, playlists, albums, user profile\n- **Search-then-act** — pass human-readable names where IDs are expected (e.g. `spotify queue add \"bohemian rhapsody\"`)\n- **Enriched output** — Spotify's API returns opaque IDs for mutations; we resolve them to human/agent-readable names, artists, and albums automatically\n- **JSON to stdout** — pipe to `jq`, scripts, or AI agents\n- **PKCE auth** — no client secret, tokens refresh automatically\n- **Structured errors** — JSON to stderr with [error codes](https://spotify-cli.zach.dev/commands#exit-codes) and exit codes\n- **Zero config** — single binary, no runtime dependencies\n\n## Exit codes\n\n| Code | Meaning |\n|------|---------|\n| 0 | Success |\n| 1 | Invalid arguments |\n| 2 | Auth error |\n| 3 | Spotify API error |\n| 4 | Network error |\n\n## Known limitations\n\n- `track features` and `track recommendations` are restricted for Spotify apps created after November 2024 unless you have extended quota mode approval.\n- As of February 2026, Spotify apps in development mode can no longer use batch endpoints. The CLI fetches items individually, which works but is slower for large operations. Apps with extended quota mode are unaffected.\n- Queue and playback state schemas handle tracks only, not podcast episodes.\n\n## License\n\nMIT. Not affiliated with or endorsed by Spotify AB.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzcaceres%2Fspotify-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzcaceres%2Fspotify-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzcaceres%2Fspotify-cli/lists"}