LyricsScraperNET is a versatile .NET library that provides an API for searching song lyrics from various external providers.
- Multi-framework support: Compatible with
.NET 8,.NET 9,.NET 10. - Integrated logging: Effortless debugging and tracking.
- Modular architecture: Highly testable and customizable.
- Flexible configuration: Multiple ways to configure the library.
- NuGet support: Easy installation from NuGet.
The library currently supports the following providers:
- AZLyrics
- Genius
- SongLyrics
- LyricsFreak (added by @ajay201402)
- kpoplyrics (added by @Lukeuke)
- LRCLIB
- Letras.mus.br (Coming soon 🚧. Issue #40)
- darklyrics (Coming soon 🚧. Issue #41)
- vagalume (Coming soon 🚧. Issue #42)
- Lyrics (Coming soon 🚧. Issue #25)
Provider details (how each one searches, Genius matching rules) and the removed providers (Musixmatch, LyricFind) are described in docs/providers.md.
Upgrading from 2.x: see docs/migration-2.x-to-3.0.md.
Here’s a simple example to demonstrate how to initialize and use the library with all available providers:
using LyricsScraperNET;
using LyricsScraperNET.Models.Requests;
class Program
{
static async Task Main()
{
// Create an instance of LyricScraperClient with all providers
ILyricsScraperClient lyricsScraperClient = new LyricsScraperClient()
.WithAllProviders();
var searchRequest = new ArtistAndSongSearchRequest(
artist: "Metallica",
song: "Nothing Else Matters"
);
var searchResult = await lyricsScraperClient.SearchLyricAsync(searchRequest);
if (!searchResult.IsEmpty())
{
Console.WriteLine(searchResult.LyricText);
}
}
}More examples are in the LyricsScraperNET.Client project.
| Topic | Document |
|---|---|
Client and provider settings, search order, appsettings.json (with or without dependency injection), result codes |
docs/configuration.md |
Dependency injection (IServiceCollection, IConfiguration) |
docs/dependency-injection.md |
HTTP: own HttpClient, User-Agent, proxy, Genius API key |
docs/http.md |
| Providers: how they search, known limits, removed providers | docs/providers.md |
| Architecture, search flow, adding a provider | docs/architecture.md |
| Upgrading from 2.x to 3.0 | docs/migration-2.x-to-3.0.md |
Obsolete members and their diagnostic ids (LSNET0001, ...) |
docs/obsoletions/README.md |
Install the package from NuGet:
dotnet add package LyricsScraperNET- LyricsScraperNET does not host, store or redistribute lyrics. It requests them from the providers on behalf of the application that uses it.
- Lyrics are protected by copyright of their authors and publishers. You are responsible for following the terms of use of each provider and the copyright law that applies to you, especially if you show lyrics publicly or use them commercially.
- The library does not bypass bot protection, captchas or other access restrictions. A provider whose site blocks automated access is removed (see removed providers).
If you own or represent a site used by one of the providers and want it removed from the library, open an issue or contact the maintainer through the channels listed on the GitHub profile. The provider will be removed promptly.
Contributions are welcome!
- Fork the repository and create a Pull Request.
- Report issues or propose features via the Issues tab.
For direct feedback, feel free to reach out on Telegram.
If you find this project helpful, consider supporting it:
- Starring this repository on GitHub ⭐.
- Crypto. Send only on the networks listed, a coin sent on another network may be lost:
| Network | Coins | Address |
|---|---|---|
| Bitcoin | BTC | bc1q02d7p4qhjhjn5mnu99wdfc2j06d364jt8qeq0c |
| Ethereum, Base, Arbitrum, Polygon, BNB Chain | ETH, USDT, USDC | 0xa56541B7DF6263ab84c3e1B69bD37f2a6d848412 |
| Solana | SOL, USDT, USDC | BZcuV721p9XPsdreiKY9rsmxZDVf8qHNRk3EoPp25nrS |
| Tron | USDT (TRC-20) | TGyoTufYzVPU6igcQmFGwH1SFrNes9q3UP |
Your support helps keep this project alive and evolving!
This project is licensed under the MIT License.

