shazamio
ShazamIO
Python

🎡 Is a free asynchronous library from reverse engineered Shazam API written in Python 3.10+ with asyncio and aiohttp.

Last updated Jul 3, 2026
898
Stars
106
Forks
27
Issues
+8
Stars/day
Attention Score
35
Language breakdown
Python 100.0%
β–Έ Files click to expand
README

https://scrutinizer-ci.com/g/dotX12/ShazamIO/ https://scrutinizer-ci.com/g/dotX12/ShazamIO/ https://scrutinizer-ci.com/g/dotX12/ShazamIO/ https://badge.fury.io/py/shazamio https://pepy.tech/project/shazamio https://pepy.tech/project/shazamio https://github.com/dotX12/ShazamIO/blob/master/LICENSE.txt

🎡 Is a FREE asynchronous library from reverse engineered Shazam API written in Python 3.8+ with asyncio and aiohttp. Includes all the methods that Shazam has, including searching for a song by file.


πŸ’Ώ Installation

πŸ’² pip install shazamio

πŸ’» Example

πŸ”ŽπŸŽ΅ Recognize track

Recognize a track based on a file

import asyncio
from shazamio import Shazam

async def main(): shazam = Shazam() # out = await shazam.recognize_song('dora.ogg') # slow and deprecated, don't use this! out = await shazam.recognize('dora.ogg') # rust version, use this! print(out)

loop = asyncio.geteventloop() loop.rununtilcomplete(main())

πŸ‘¨β€πŸŽ€ About artist

Retrieving information from an artist profile
https://www.shazam.com/artist/43328183/nathan-evans

import asyncio
from shazamio import Shazam, Serialize

async def main(): shazam = Shazam() artist_id = 43328183 aboutartist = await shazam.artistabout(artist_id) serialized = Serialize.artist(about_artist)

print(about_artist) # dict print(serialized) # serialized from dataclass factory

loop = asyncio.geteventloop() loop.rununtilcomplete(main())

πŸŽ΅πŸ“„ About track

Get track information
https://www.shazam.com/track/552406075/ale-jazz

import asyncio
from shazamio import Shazam, Serialize

async def main(): shazam = Shazam() track_id = 552406075 abouttrack = await shazam.trackabout(trackid=trackid) serialized = Serialize.track(data=about_track)

print(about_track) # dict print(serialized) # serialized from dataclass factory

loop = asyncio.geteventloop() loop.rununtilcomplete(main())

πŸŽ΅βŒ› Track listenings count

Returns the number of times a particular song has been played
https://www.shazam.com/track/559284007/rampampam

import asyncio
from shazamio import Shazam

async def main(): # Example: https://www.shazam.com/track/559284007/rampampam

shazam = Shazam() track_id = 559284007 count = await shazam.listeningcounter(trackid=track_id) print(count)

loop = asyncio.geteventloop() loop.rununtilcomplete(main())

πŸŽΆπŸ’¬ Similar songs

Similar songs based song id
https://www.shazam.com/track/546891609/2-phu%CC%81t-ho%CC%9Bn-kaiz-remix

import asyncio
from shazamio import Shazam

async def main(): shazam = Shazam() track_id = 546891609 related = await shazam.relatedtracks(trackid=track_id, limit=5, offset=2) # ONLY β„–3, β„–4 SONG print(related)

loop = asyncio.geteventloop() loop.rununtilcomplete(main())

πŸ”ŽπŸ‘¨β€πŸŽ€ Search artists

Search all artists by prefix

import asyncio from shazamio import Shazam, Serialize

async def main(): shazam = Shazam() artists = await shazam.search_artist(query='Lil', limit=5) for artist in artists['artists']['hits']: serialized = Serialize.artist(data=artist) print(serialized)

loop = asyncio.geteventloop() loop.rununtilcomplete(main())

πŸ”ŽπŸŽΆ Search tracks

Search all tracks by prefix

import asyncio
from shazamio import Shazam

async def main(): shazam = Shazam() tracks = await shazam.search_track(query='Lil', limit=5) print(tracks)

loop = asyncio.geteventloop() loop.rununtilcomplete(main())

πŸ”πŸŽΆπŸ‘¨β€πŸŽ€ Top artist tracks

Get the top songs according to Shazam
https://www.shazam.com/artist/201896832/kizaru

import asyncio
from shazamio import Shazam, Serialize
from shazamio.schemas.artists import ArtistQuery
from shazamio.schemas.enums import ArtistView

async def main(): shazam = Shazam() artist_id = 1081606072

aboutartist = await shazam.artistabout( artist_id, query=ArtistQuery( views=[ ArtistView.TOP_SONGS, ], ), ) serialized = Serialize.artistv2(aboutartist) for i in serialized.data[0].views.top_songs.data: print(i.attributes.name)

loop = asyncio.geteventlooppolicy().getevent_loop() loop.rununtilcomplete(main())

πŸ”πŸŽΆπŸ™οΈ Top tracks in city

Retrieving information from an artist profile
https://www.shazam.com/charts/top-50/russia/moscow

import asyncio
from shazamio import Shazam, Serialize

async def main(): shazam = Shazam() toptenmoscowtracks = await shazam.topcitytracks(countrycode='RU', city_name='Moscow', limit=10) print(toptenmoscow_tracks) # ALL TRACKS DICT for track in toptenmoscow_tracks['tracks']: serialized = Serialize.track(data=track) # SERIALIZE FROM DATACLASS FACTORY print(serialized)

loop = asyncio.geteventloop() loop.rununtilcomplete(main())

πŸ”πŸŽΆπŸ³οΈβ€πŸŒˆ Top tracks in country

Get the best tracks by country code
https://www.shazam.com/charts/discovery/netherlands

import asyncio
from shazamio import Shazam, Serialize

async def main(): shazam = Shazam() topfivetrackfromamsterdam = await shazam.topcountrytracks('NL', 5) for track in topfivetrackfromamsterdam['tracks']: serialized = Serialize.track(data=track) print(serialized)

loop = asyncio.geteventloop() loop.rununtilcomplete(main())

πŸ”πŸŽΆπŸ³οΈβ€πŸŒˆπŸŽΈ Top tracks in country by genre

The best tracks by a genre in the country
https://www.shazam.com/charts/genre/spain/hip-hop-rap

import asyncio
from shazamio import Shazam, GenreMusic

async def main(): shazam = Shazam() topspainrap = await shazam.topcountrygenre_tracks( country_code='ES', genre=GenreMusic.HIPHOPRAP, limit=4 ) print(topspainrap)

loop = asyncio.geteventloop() loop.rununtilcomplete(main())

πŸ”πŸŽΆπŸŒπŸŽΈ Top tracks in world by genre

Get world tracks by certain genre
https://www.shazam.com/charts/genre/world/rock

import asyncio
from shazamio import Shazam, Serialize, GenreMusic

async def main(): shazam = Shazam() toprockintheworld = await shazam.topworldgenre_tracks(genre=GenreMusic.ROCK, limit=10)

for track in toprockintheworld['tracks']: serialized_track = Serialize.track(data=track) print(serializedtrack.spotifyurl)

loop = asyncio.geteventloop() loop.rununtilcomplete(main())

πŸ”πŸŽΆπŸŒTop tracks in world

Get the best tracks from all over the world
https://www.shazam.com/charts/top-200/world

import asyncio
from shazamio import Shazam, Serialize

async def main(): shazam = Shazam() topworldtracks = await shazam.topworldtracks(limit=10) print(topworldtracks) for track in topworldtracks['tracks']: serialized = Serialize.track(track) print(serialized)

loop = asyncio.geteventloop() loop.rununtilcomplete(main())

How to use data serialization

Open Code

import asyncio
from shazamio import Shazam, Serialize

async def main(): shazam = Shazam() topfivetrackfromamsterdam = await shazam.topcountrytracks('NL', 5) for track in topfivetrackfromamsterdam['tracks']: serialized = Serialize.track(data=track) print(serialized.title)

loop = asyncio.geteventloop() loop.rununtilcomplete(main())

Open photo: What song information looks like (Dict)

Open photo: what song information looks like (Custom serializer)

Agree, thanks to the serializer, you no longer need to manually select the necessary data from the dictionary. Now the serializer contains the most necessary information about an artist or a track.

Β© 2026 GitRepoTrend Β· shazamio/ShazamIO Β· Updated daily from GitHub