Anghami Scraper - Songs, Albums, Artists & Playlists avatar

Anghami Scraper - Songs, Albums, Artists & Playlists

Pricing

from $1.70 / 1,000 catalog records

Go to Apify Store
Anghami Scraper - Songs, Albums, Artists & Playlists

Anghami Scraper - Songs, Albums, Artists & Playlists

Scrape Anghami's public catalog by keyword or player URL. Rows carry their kind (song, album, artist, playlist, tag) with title, artist, plays, followers, podcast flags and artwork. Detail views add the description and a podcast episode list, one per-record toggle.

Pricing

from $1.70 / 1,000 catalog records

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Anghami Catalog Scraper

Scrape Anghami's public music and podcast catalog (anghami.com, the MENA region's leading streaming service) by keyword or player URL. One request per page of results walks the same JSON gateway the Anghami web player itself calls, so a run reads songs, albums, artists, curated playlists and charting collections from the anonymous public catalog: no account, no session, no streaming, just catalog metadata, at a few hundred KB per page.

Why this scraper

  • Full coverage of the anonymous catalog surface: songs, albums (including podcast and audiobook objects), artists, curated playlists and the category tags behind Anghami's genre and chart pages, in one unified record shape.
  • Every row reports the record kind, so a mixed search feed filters cleanly in downstream code, and carries play counts, likes, follower counts, verified and podcast flags straight from the feed.
  • Dual mode: keyword search for catalog-wide sweeps, or paste player URLs to walk one artist page with its full discography pagination, a playlist, a genre or chart tag, or to fetch a single song or album object.
  • Detail view toggle adds the store page description and, for album objects, the complete song and episode id list, charged once per record.
  • Recurring monitoring is first-class: incremental mode reports NEW, UPDATED (play or follower moves) and EXPIRED records for scheduled runs, and Resume continues an interrupted crawl from where it stopped.
  • MCP connector export: pipe results into Notion, Linear, Airtable or another MCP app you already use.
  • Clean dataset contract: record identity (kind:id), canonical URL, artwork URL and incremental change fields on every row, so downstream consumers can join and dedupe reliably.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
recordId"song:0000000"
kind"song"
id"0000000"
url"https://play.anghami.com/song/0000000"
title"Sample Song Title"
artist"Sample Artist"
artistId"000000"
album"Sample Album Title"
albumId"0000000000"
durationSec228
year2026
releasedate"2026-01-01"
genre"Pop - Sample"
plays13000000
likes120000
followers17600000
nbrSongs100
isPodcastfalse
isAudiobookfalse
isPodcasterfalse (artist rows)
verifiedtrue
explicitfalse
keywords["Sample Song Title", "Sample Artist"]
coverArt"https://artwork.anghcdn.co/webp/?id=000000000&size=400"
webTitle / webDescriptiondetail-view extras
curator"Anghami Editorial" (playlist-style album objects)
songIds["0000000000", "0000000001"] (album objects, detail toggle on)
changeType"NEW" (incremental mode)
scrapedAt"2026-01-01T00:00:00Z"

How to Use

1. Search by keyword

{
"mode": "search",
"searchTerms": ["Sherine", "Wael Kfoury"],
"maxItems": 50
}
{
"mode": "search",
"searchTerms": ["new arabic releases"],
"kinds": ["song", "album"],
"maxItems": 100
}

3. Walk an artist's catalog (URL mode)

{
"mode": "url",
"urls": ["https://play.anghami.com/artist/422"],
"maxItems": 100
}

Past a playlist, category tag or album URL the same way; each URL decides its own scope.

4. Recurring monitoring (incremental mode)

{
"mode": "url",
"urls": ["https://play.anghami.com/artist/422"],
"incrementalMode": true,
"emitUnchanged": false
}

Run it on a schedule: the first run marks everything NEW, later runs report only the changes (play counts and follower moves included as UPDATED).

Input Parameters

ParameterTypeDefaultDescription
modeselectsearchSearch by keyword, or process pasted player URLs.
searchTermsstring list["Sherine"]Keywords to search. Search mode only.
urlsstring list-Player URLs (artist, song, album, playlist, tag pages). URL mode only.
kindsmulti-select-Only keep rows of these kinds (song, album, artist, playlist, tag). Applied to the rows this run reads, in both modes. A pasted song or album URL is the one exception: the object you pasted is returned in full regardless of this filter.
excludePodcastscheckboxfalseDrop rows flagged as podcast episodes (both flagged song rows and the podcast object itself, an album-kind row). A pasted song or album URL is the one exception: that object is returned in full.
fetchDetailscheckboxfalseFetch each record's detail view (store page description, album song/episode id list). Charged once per record; a pasted song or album URL is not charged this fee, since its object's own page was read because it was pasted.
maxItemsinteger20The single cap on a run; stop after this many records. 0 = unlimited.
maxPagesinteger0Safety bound on pages walked per source. 0 = no page limit.
resumeFromRunIdtext-Continue an interrupted or capped run, skipping records it already collected.
incrementalModecheckboxfalseRecurring monitoring: return only NEW, UPDATED and REAPPEARED records on later runs.
stateKeytext-Name the monitoring campaign (incremental mode only).
emitUnchangedcheckboxfalseAlso return unchanged rows (billed).
emitExpiredcheckboxfalseAlso return records no longer found (billed, complete scans only).
mcpConnectorsconnector list-Optional export into Notion, Linear, Airtable or Apify MCP apps.
notionParentPageUrltext-Notion parent page for the Notion connector.
maxNotifyListingsinteger50Cap on records written to each connector per run.
proxyproxy objectdefault poolLeave the default unless a run reports it could not read any results.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"recordId": "song:0000000000",
"kind": "song",
"id": "0000000000",
"url": "https://play.anghami.com/song/0000000000",
"coverArt": "https://artwork.anghcdn.co/webp/?id=000000000&size=400",
"title": "Sample Song Title",
"artist": "Sample Artist",
"artistId": "000000",
"album": "Sample Album Title",
"albumId": "0000000000",
"durationSec": 228,
"year": 2026,
"releasedate": "2026-01-01",
"genre": "Pop - Sample",
"plays": 13011686,
"likes": 120000,
"lyrics": true,
"explicit": false,
"isPodcast": false,
"isAudiobook": false,
"keywords": ["Sample Song Title", "Sample Artist"],
"scrapedAt": "2026-01-01T00:00:00Z",
"changeType": "NEW",
"firstSeenAt": "2026-01-01T00:00:00Z",
"lastSeenAt": "2026-01-01T00:00:00Z"
}

Album and podcast objects carry nbrSongs and, with the detail toggle on, songIds (the episode list) and curator. Artist rows carry isPodcaster and followers.

Send results into your apps (MCP connectors)

Optionally pipe results into the apps you already use via Model Context Protocol (MCP) connectors. Authorize a connector under Apify > Settings > API & Integrations, then select it in the mcpConnectors input. Notion needs notionParentPageUrl (the page under which item pages are created) and creates one page per record; other connectors get a best-effort write. Each connector receives a condensed, human-readable summary per record (title plus key fields flattened to text), not the full record; the complete record always stays in the Apify dataset. maxNotifyListings caps how many records are written per connector per run. Leaving the connector fields empty skips the export entirely; nothing about the dataset output changes.

๐Ÿ”— More scrapers you might like

Pair this actor with these related scrapers from the same team:

๐Ÿงฉ TIDAL Scraper
Scrape TIDAL tracks, albums, artists, playlists and public mixes by search phrase or URL...
๐Ÿค– Suno Scraper
Collect public Suno music data: songs with lyrics, style tags, model version, play and...
โšฝ JioHotstar Scraper
Scrape the JioHotstar catalog by content type or URL. Extract shows, movies, episodes...
๐Ÿงฉ Bandsintown Scraper
Scrape Bandsintown concert and festival dates: artist tour calendars, venue profiles...
๐Ÿงฉ TuneIn Scraper
Scrape TuneIn by keyword, category, genre, location or URL. Extract stations and podcasts...
๐Ÿงฉ Roblox Scraper
Scrape Roblox experiences, marketplace items, users and communities. Player counts...

๐Ÿ‘‰ Browse all abotapi scrapers

๐Ÿ’ฌ Support & custom scrapers

  • ๐Ÿž Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • ๐Ÿ› ๏ธ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
  • โญ Enjoying it? A quick review on the actor page helps other users find it.