Skip to content
    ↑↓ to choose · Enter to open

    · 13 min read

    Genius Lyrics & Songs Scraper: Up to 1,000 Free Results a Month (2026)

    By CrawlerBros Engineering Team

    Each song record carries 27 fields, including full lyrics text, producer credits, and external streaming links for YouTube, Spotify, and Apple Music. At $5.00 per 1,000 results on Apify's free plan, you can run small catalog extractions without committing upfront. Built for A&R teams tracking trending charts and developers populating lyrics databases, but not for anyone who needs buyer contact details, which the records do not include.

    Try it before you read further. Apify's free plan includes $5.00 of usage every month with no credit card, enough for up to 1,000 results at $0.005 each before platform usage. Open Genius Lyrics & Songs Scraper on Apify and run the prefilled example.

    How reliable is Genius Lyrics & Songs Scraper in production?

    Across the last 30 days of public runs on the Apify platform, Genius Lyrics & Songs Scraper recorded 92 runs with the following outcomes.

    Outcome Runs Share
    Succeeded 88 95.7%
    Failed 0 0.0%
    Aborted by the user 3 3.3%
    Timed out 1 1.1%
    Total 92 100.0%

    Configure automated retries for timed-out runs, but remember that user aborts are manual stops rather than technical errors.

    What does it cost to run Genius Lyrics & Songs Scraper?

    Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.005 $5.00
    BRONZE $0.00433 $4.33
    SILVER $0.00367 $3.67
    GOLD $0.003 $3.00
    PLATINUM $0.003 $3.00
    DIAMOND $0.003 $3.00

    Worked example: collecting 10,000 results costs $50.00 in result charges before run-start fees and platform usage. With 1.1% of runs failing or timing out in the last 30 days, budget for re-running a portion of those batches rather than assuming every run completes.

    The maxItems control directly governs how many dataset items a run writes, making it the primary driver of your result bill. Optional boolean toggles like includeAnnotations or includeLyrics trigger extra HTTP requests per song without changing the result item count. Run initial tests with maxItems set to a low number before launching full catalog runs.

    How do you run Genius Lyrics & Songs Scraper from the API?

    The schema marks 2 of its 15 controls as required: mode, proxy. Nothing in the payload below is illustrative. Those are the schema's prefilled defaults for Genius Lyrics & Songs Scraper, so the request works once your token is in place.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~genius-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"mode":"trending","searchQuery":"bohemian rhapsody","artistName":"queen","proxy":{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "mode": "trending",
      "searchQuery": "bohemian rhapsody",
      "artistName": "queen",
      "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": [
          "RESIDENTIAL"
        ]
      }
    }
    
    run = client.actor("crawlerbros~genius-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "mode": "trending",
      "searchQuery": "bohemian rhapsody",
      "artistName": "queen",
      "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
          "RESIDENTIAL"
        ]
      }
    }
    
    const run = await client.actor('crawlerbros~genius-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    Because the call is synchronous, your client waits for the whole run. Keep it for exploration. For scheduled work, start the run without waiting and collect the dataset afterwards, so network trouble costs you a retry rather than the results.

    Which Genius Lyrics & Songs Scraper inputs matter, and which can you skip?

    Set proxy to use residential proxies because Genius blocks default datacenter IPs with HTTP 403 errors. For general chart and song scraping, leave includeAnnotations set to false unless you specifically need community explanations.

    • mode (string): What to scrape from Genius. Default: "trending".
    • proxy (object): Apify proxy. Genius.com blocks Apify's default/datacenter IPs with HTTP 403 - Residential proxy is required for reliable results. Default: {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}.
    • searchQuery (string): Search term (mode=search).
    • artistName (string): Artist name to fetch top songs for (mode=artistSongs).
    • chartGenre (string): Genre filter for the trending charts (mode=trending). Default: "all".
    • timePeriod (string): Time window for the trending charts (mode=trending). Default: "day".
    • searchType (string): Type of entity to search for (mode=search). Default: "song".
    • artistSongsSort (string): Sort order for the artist's songs (mode=artistSongs). Default: "popularity".
    • songUrls (array): Genius song page URLs to fetch (mode=byUrl). e.g. https://genius.com/Queen-bohemian-rhapsody-lyrics Default: [].
    • songIds (array): Genius numeric song IDs (mode=byId). Default: [].
    • includeLyrics (boolean): Fetch full song lyrics text (requires an additional HTTP request per song). Default: true.
    • includeArtistDetails (boolean): Fetch full artist profile (bio, follower count, social links) from the artist's own page. Applies to mode=search with searchType=artist (enriches each artist result) and mode=artistSongs (adds one bonus artist profile record alongside the songs). Requires an additional HTTP request per artist. Default: true.

    The other 3 controls, with their defaults, are listed in the input schema on Genius Lyrics & Songs Scraper on Apify.

    Fixed-choice controls: mode accepts trending (Trending Songs (homepage hot songs)), search (Search songs, artists, or albums), artistSongs (Artist top songs), byUrl (Fetch specific songs by URL), byId (Fetch specific songs by ID); chartGenre accepts all (All Genres), pop, rap, electronic, rock, country, rb (R&B); timePeriod accepts day (Today), week (This Week), month (This Month), all_time (All Time); searchType accepts song (Songs), artist (Artists), album (Albums), video (Videos (Genius editorial/news videos)), article (Articles (Genius editorial/news posts)), user (Users (Genius community contributor profiles)), lyric (Lyrics (find songs by lyric content, not title/artist)); artistSongsSort accepts popularity (Most popular first), title (A-Z), release_date (newest first).

    What does Genius Lyrics & Songs Scraper return?

    The output returns song, artist, album, video, article, or user records containing lyrics, social links, tracklists, and metadata for music analysis.

    Output per record

    • recordType
    • song
    • artist
    • album
    • video
    • article
    • user
    • scrapedAt

    Song records (trending, search with searchType=song/lyric, artistSongs, byUrl, byId)

    • songId, title, artistName, artistId
    • releaseDate, imageUrl, songUrl
    • lyrics - full lyrics text (when includeLyrics is enabled)
    • pageViews, annotationCount, pyongsCount (Genius's own like/upvote count)
    • hot, instrumental, lyricsState (complete, incomplete, unreleased, ...)
    • featuredArtists[]
    • album - { name, url }
    • genreTags[], producerArtists[], writerArtists[]
    • youtubeUrl, spotifyUrl, soundcloudUrl, appleMusicUrl
    • language, explicit, description
    • annotations[] - { fragment, annotationText, authorName, votesTotal, annotationUrl } (when includeAnnotations is enabled and the song has community annotations)

    Artist records (search with searchType=artist, or the bonus profile record in artistSongs)

    • artistId, artistName, slug, artistUrl
    • imageUrl, headerImageUrl
    • verified, iq (Genius reputation score)
    • followersCount, bio, alternateNames[], translationArtist
    • twitterUrl, instagramUrl, facebookUrl, tiktokUrl, snapchatUrl
    • spotifyUrl, soundcloudUrl, appleMusicUrl, youtubeUrl, amazonMusicUrl, shazamUrl, tidalUrl, websiteUrl

    Album records (search with searchType=album)

    • albumId, albumName, artistName, artistId
    • coverUrl, headerImageUrl, albumUrl, releaseDate
    • description, language, albumType
    • pyongsCount, commentCount, trackCount
    • tracklist[] - { position, title, songUrl }

    Video records (search with searchType=video)

    • videoId, title, videoUrl, articleUrl
    • description, posterUrl, durationSeconds, viewCount
    • publishedAt, authorName

    Article records (search with searchType=article)

    • articleId, title, articleUrl, description
    • articleType, previewImageUrl
    • pyongsCount, votesTotal, publishedAt, authorName

    User records (search with searchType=user)

    • userId, username, displayName, userUrl
    • aboutMe, role, avatarUrl
    • iq, verified

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open Genius Lyrics & Songs Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Execute a run with mode set to search, searchQuery to 'bohemian rhapsody', searchType to 'song', and maxItems set to 5.
    2. Verify that each item in the dataset contains base fields like recordType, songId, title, and songUrl.
    3. Ensure the proxy input object has useApifyProxy set to true and apifyProxyGroups containing 'RESIDENTIAL' to avoid HTTP 403 blocks.
    4. Set includeLyrics to true and includeAnnotations to true if your pipeline requires song lyrics alongside crowd-sourced annotations.
    5. Switch mode to artistSongs with artistName set to 'queen' or mode to trending with chartGenre set to 'pop' depending on your goal.
    6. Adjust maxItems between 1 and 500 to control the batch size of returned records.
    7. Inspect the lyricsState field on returned song records to filter complete song texts from instrumental or unreleased entries.

    How do you apply it? Three worked playbooks

    These are Genius Lyrics & Songs Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Lyrics apps & karaoke tools

    Outcome: Bulk-import full lyrics with structured metadata

    Configure: Set mode to 'byUrl', songUrls to ['https://genius.com/Queen-bohemian-rhapsody-lyrics'], includeLyrics to true, includeAnnotations to false, maxItems to 100, and proxy to use Apify RESIDENTIAL proxy.

    Working method: Start with a single URL to confirm that lyrics and songId return as expected, then populate songUrls with your full list.

    Deliverable: A dataset of song records containing full lyrics text, producer and writer credits, streaming URLs, and numeric song IDs.

    Stop condition: Song records return missing lyrics text while lyricsState is set to complete.

    Use case 2: Music trend tracking

    Outcome: Monitor daily/weekly/monthly genre charts for A&R or playlist curation

    Configure: Set mode to 'trending', chartGenre to 'pop', timePeriod to 'day', includeLyrics to false, maxItems to 50, and proxy to use Apify RESIDENTIAL proxy.

    Working method: Schedule a daily run for mode=trending, inspect pageViews and pyongsCount across items, and track rank position changes over time.

    Deliverable: Daily chart snapshot datasets containing song titles, artist names, page view counts, and upvote metrics for the selected genre.

    Stop condition: The dataset returns zero items or lacks pageViews values across top chart records.

    Use case 3: Artist research

    Outcome: Pull discographies, follower counts, and social links for outreach or fan analytics

    Configure: Set mode to 'artistSongs', artistName to 'queen', artistSongsSort to 'popularity', includeArtistDetails to true, maxItems to 100, and proxy to use Apify RESIDENTIAL proxy.

    Working method: Run the Actor for a target artist name, then confirm that the output dataset includes top track song records alongside the bonus artist profile record.

    Deliverable: A collection of top song records alongside a dedicated artist profile record containing social handles, bio text, and follower counts.

    Stop condition: The bonus artist profile record is missing from the dataset despite includeArtistDetails being set to true.

    What breaks, and how do you design around it?

    • Over the last 30 days, 0.0% of public runs failed and 1.1% timed out. Build retries and alerting around those rates rather than assuming every run completes.

    Genius caps search results at 5 items per run when searchType is set to album, video, article, user, or lyric. To retrieve larger catalogs, issue multiple targeted query runs or use mode=artistSongs to gather tracks by artist. Always verify that residential proxy settings are enabled to prevent 403 forbidden responses.

    When should you not use Genius Lyrics & Songs Scraper?

    Do not use this Actor if you need cross-platform streaming counts from Spotify or Apple Music rather than crowd-sourced lyrics and Genius trending data. For daily platform stream metrics and global top charts, use Kworb Music Charts Scraper instead. If you need official store pricing, preview audio URLs, and multi-country digital catalog metadata, use iTunes Search Scraper.

    What should you check before trusting the output?

    • Verify that the proxy settings retain RESIDENTIAL in apifyProxyGroups, as datacenter IPs receive HTTP 403 blocks from Genius.
    • Check that song records contain a non-empty lyrics string when includeLyrics is true, unless lyricsState reads instrumental.
    • Confirm that the annotations array is populated when includeAnnotations is set to true on annotated songs.
    • Monitor runs using searchType set to album, video, article, user, or lyric to ensure they do not exceed the 5-item search cap.
    • Validate that an artist record is present alongside song records when mode is set to artistSongs with includeArtistDetails set to true.

    None of this proves a record is correct. It gives a scheduled Genius Lyrics & Songs Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    What is the price per result for Genius Lyrics & Songs Scraper?

    Results cost $0.005 per item, which equals $5.00 per 1,000 results on Apify's free plan. Paid plans pay less per result. Apify also bills platform usage for each run.

    How reliable has this Actor been recently?

    Over the last 30 days, 88 of 92 public runs finished successfully, showing a 95.7% success rate with 0 failures, 1 timeout, and 3 user-initiated aborts.

    Why does this Actor require a residential proxy?

    Genius blocks Apify's default IP ranges with HTTP 403 errors. The default input schema specifies Apify Residential proxy configurations so runs work reliably.

    Why does an album search only return 5 items?

    Genius limits search results for albums, videos, articles, users, and lyric-content searches to 5 records per query, regardless of the maxItems input value.

    How do I fetch full lyrics for specific song URLs?

    Set mode to byUrl, supply full Genius song URLs in the songUrls array, and verify that includeLyrics is set to true in your input configuration.

    Where to go next

    When you are ready to run it, open Genius Lyrics & Songs Scraper on Apify; the free plan covers up to 1,000 results a month.

    Other Actors we maintain for related data:

    • Kworb Music Charts Scraper: Scrape Kworb.net music charts - Spotify daily/weekly streaming charts (global + 76 countries), the worldwide Apple Music / iTunes song chart, YouTube's most-viewed music videos, all-time top-streamed Spotify artists, and per-artist song-level streaming stats.
    • iTunes Search Scraper: Scrape the iTunes Search API - search Apple's catalog of music tracks, albums, podcasts, movies, TV shows, audiobooks, and ebooks across 100+ country storefronts.
    • Last.fm Scraper: Scrape Last.fm music data with search artists, tracks, and albums; get weekly top charts; browse by genre/tag; fetch artist top tracks.
    • SoundCloud Scraper: Scrape SoundCloud with search tracks and artists, browse top/trending charts, fetch all tracks from an artist, or fetch any track/playlist/user URL.

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-10-09.

    • Actor last updated by its maintainers on 2026-08-10.

    • Run outcome figures cover the 30 day public window ending 2026-10-09.

    • Genius Lyrics & Songs Scraper on Apify

    Featured actors

    Genius Lyrics & Songs Scraper

    Scrape song lyrics, artist info, and trending songs from Genius.com. Search songs/artists/albums, fetch lyrics by URL or ID, get artist top songs. No API key required.

    Run on Apify ↗