Skip to main content

LyricsGenius: a Python client for the Genius.com API

Build Status Documentation Status PyPI version Support this project

lyricsgenius provides a simple interface to the song, artist, and lyrics data stored on Genius.com.

The full documentation for lyricsgenius is available online at Read the Docs.

Setup

Before using this package you'll need to sign up for a (free) account that authorizes access to the Genius API. The Genius account provides a access_token that is required by the package. See the Usage section below for examples.

Installation

lyricsgenius requires Python 3.11 or greater.

Use pip to install the package from PyPI:

pip install lyricsgenius

Or, install the latest version of the package from GitHub:

pip install git+https://github.com/johnwmillr/LyricsGenius.git

Usage

Import the package and initiate Genius:

import lyricsgenius
genius = lyricsgenius.Genius(token)

If you don't pass a token to the Genius class, lyricsgenus will look for an environment variable called GENIUS_ACCESS_TOKEN and attempt to use that for authentication.

genius = Genius()

Search for songs by a given artist:

artist = genius.search_artist("Andy Shauf", max_songs=3, sort="title")
print(artist.songs)

By default, the search_artist() only returns songs where the given artist is the primary artist. However, there may be instances where it is desirable to get all of the songs that the artist appears on. You can do this by setting the include_features argument to True.

artist = genius.search_artist("Andy Shauf", max_songs=3, sort="title", include_features=True)
print(artist.songs)

Search for a single song by the same artist:

song = artist.song("To You")
# or:
# song = genius.search_song("To You", artist.name)
print(song.lyrics)

Add the song to the artist object:

artist.add_song(song)
# the Artist object also accepts song names:
# artist.add_song("To You")

Save the artist's songs to a JSON file:

artist.save_lyrics()

Searching for an album and saving it:

album = genius.search_album("The Party", "Andy Shauf")
album.save_lyrics()

There are various options configurable as parameters within the Genius class:

genius.remove_section_headers = True # Remove section headers (e.g. [Chorus]) from lyrics when searching
genius.skip_non_songs = False # Include hits thought to be non-songs (e.g. track lists)
genius.excluded_terms = ["(Remix)", "(Live)"] # Exclude songs with these words in their title

By default the library is silent. To enable progress logging:

import lyricsgenius
lyricsgenius.enable_logging()  # defaults to DEBUG; pass logging.INFO for less output

You can also call the package from the command line:

export GENIUS_ACCESS_TOKEN="my_access_token_here"
python -m lyricsgenius --help

# Print a song's lyrics to stdout in text format
python -m lyricsgenius song "Check the Rhyme" "A Tribe Called Quest" --format txt

# Save a song's lyrics in JSON format
python -m lyricsgenius song "Begin Again" "Andy Shauf" --format json --save

# Save a song's lyrics in both JSON and text formats
python -m lyricsgenius song "Begin Again" "Andy Shauf" --format json txt --save

# Save a song's lyrics with a custom filename
python -m lyricsgenius song "Begin Again" "Andy Shauf" --format json --save --output-file my_song

# Save an artist's lyrics to text files (stopping after 2 songs)
python -m lyricsgenius artist "The Beatles" --max-songs 2 --format txt --save

Example projects

Contributing

Please contribute! If you want to fix a bug, suggest improvements, or add new features to the project, just open an issue or send me a pull request.

Releasing

Releases are driven by tags. The package version is derived from the tag, so there is no version to bump anywhere in the repository — tag a commit on master and push the tag:

git tag v3.15.0
git push origin v3.15.0

That builds the package, publishes it to PyPI, and creates the matching GitHub release. A run that fails partway can simply be re-run.

Metadata

Release files for lyricsgenius 3.15.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lyricsgenius 3.15.0
File Size Uploaded
lyricsgenius-3.15.0.tar.gz 526.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lyricsgenius 3.15.0
File Interpreter ABI Platform
lyricsgenius-3.15.0-py3-none-any.whl Python 3 none any Details

Total release size: 579.1 kB

Release files / lyricsgenius-3.15.0.tar.gz

Download URL lyricsgenius-3.15.0.tar.gz
Size 526.9 kB
Tags Source
SHA-256 checksum
How to use checksums
e49fc72e6d90441249e1c4c7cb273c6c04bc2fb2e66c41817f4bfa491ff09eb3
BLAKE2b-256 checksum
How to use checksums
31246c64965d74e6758cd5d1ca0c2dff4a5a096a55182cf4d64c2a04d27bc971
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release files / lyricsgenius-3.15.0-py3-none-any.whl

Download URL lyricsgenius-3.15.0-py3-none-any.whl
Size 52.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dc4cd28403962b35c2dcbb78f7297df0ef889300c193664e5e359cfd1298ff32
BLAKE2b-256 checksum
How to use checksums
9e722f4e61aca119ce8fe35d396be6056cdb7068efc66709a6ef0cb3ddc109ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

3.15.0 This release

2 release files

3.14.0

2 release files

3.13.0

2 release files

3.12.2

2 release files

3.12.0

2 release files

3.11.0

2 release files

3.10.3

2 release files

3.10.2

2 release files

3.9.0

2 release files

3.8.0

2 release files

3.7.6

2 release files

3.7.5

2 release files

3.7.4

2 release files

3.7.3

2 release files

3.7.2

2 release files

3.7.1

2 release files

3.7.0

2 release files

3.6.5

2 release files

3.6.4

2 release files

3.6.3

2 release files

3.6.2

2 release files

3.6.1

2 release files

3.6.0

2 release files

3.5.1

2 release files

3.5.0

2 release files

3.4.4

2 release files

3.3.1

2 release files

3.3.0

2 release files

3.2.0

2 release files

3.1.2

2 release files

3.1.1

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.8.6

2 release files

1.8.5

2 release files

1.8.4

2 release files

1.8.2

2 release files

1.8.0

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.0

2 release files

0.9.8

2 release files

0.9.5

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.7.0

2 release files

0.6.3

2 release files

0.6.1

2 release files

0.6.0

1 release file

0.5

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4

1 release file

0.3

1 release file

0.2

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page