Unavatar
Get unified user avatar from social networks, including Instagram, SoundCloud, Telegram, Twitter, YouTube & more.
Install / Use
/learn @microlinkhq/UnavatarREADME
![]()
- Quick start
- Query parameters
- Pricing
- Providers
- Response Format
- Response Headers
- Response Errors
- Contact
Welcome to unavatar.io, the ultimate avatar service that offers everything you need to easily retrieve user avatars:
-
Versatile: A wide range of platforms and services including TikTok, Instagram, YouTube, X/Twitter, Gravatar, etc., meaning you can rule all of them just querying against unavatar.
-
Speed: Designed to be fast and efficient with a 97% cache hit rate, serving 24.3 TB of data across 522M requests.
-
Optimize: All the images are not only compressed on-the-fly to reduce their size and save bandwith, but also optimized to maintain a high-quality ratio. They are ready for immediate use, enhancing the overall optimization of your website or application.
-
Integration: The service seamlessly incorporates into your current applications or websites with ease. We offer straightforward documentation and comprehensive support to ensure a quick and effortless onboarding experience.
It's proudly powered by microlink.io, the headless browser API that handles all the heavy lifting behind the scenes to ensure your avatars are always ready.
Quick start
The service is exposed in unavatar.io via provider endpoints:
- an email: unavatar.io/gravatar/hello@microlink.io
- an username: unavatar.io/github/kikobeats
- a domain: unavatar.io/google/reddit.com
Use the /:provider/:key format for all lookups. You can read more about available providers in providers.
Query parameters
TTL
Type: number or string<br>
Default: '24h'<br>
Range: from '1h' to '28d'
It determines the maximum quantity of time an avatar is considered fresh.
e.g., unavatar.io/github/kikobeats?ttl=1h
When you look up for a user avatar for the very first time, the service will determine it and cache it respecting TTL value.
The same resource will continue to be used until reach TTL expiration. After that, the resource will be computed, and cache as fresh, starting the cycle.
Fallback
Type: string or boolean
When it can't be possible to get a user avatar, a fallback image is returned instead, and it can be personalized to fit better with your website or application style.
You can get one from boringavatars.com:
or avatar.vercel.sh:
e.g., unavatar.io/github/37t?fallback=https://avatar.vercel.sh/37t?size=400
or a static image:
e.g., unavatar.io/github/37t?fallback=https://avatars.githubusercontent.com/u/66378906?v=4
or even a base64 encoded image. This allows you to return a transparent, base64 encoded 1x1 pixel GIF, which can be useful when you want to use your own background colour or image as a fallback.
You can pass fallback=false to explicitly disable this behavior. In this case, a 404 Not Found HTTP status code will returned when is not possible to get the user avatar.
JSON
The service returns media content by default.
This is in this way to make easier consume the service from HTML markup.
In case you want to get a JSON payload as response, just pass json=true:
e.g., unavatar.io/github/kikobeats?json
Pricing
The service is FREE for everyone, no registration required, with a daily rate limit of 50 requests per IP address.
For preventing abusive usage, the service has associated a daily rate limit based on requests IP address.
You can verify for your rate limit state checking the following headers in the response:
x-rate-limit-limit: The maximum number of requests that the consumer is permitted to make per minute.x-rate-limit-remaining: The number of requests remaining in the current rate limit window.x-rate-limit-reset: The time at which the current rate limit window resets in UTC epoch seconds.
For higher usage, the plan is a usage-based plan billed monthly that removes rate limits and unlocks custom TTL.
Every request has a cost in tokens ($0.001 per token) based on the proxy tier needed to resolve the avatar:
| Proxy tier | Tokens | Cost | |-------------|--------|---------| | Origin | 1 | $0.001 | | Datacenter | +2 | $0.003 | | Residential | +4 | $0.007 |
The proxy tier used is returned in the x-proxy-tier response header, and the total cost in the x-unavatar-cost header.
$ curl -I -H "x-api-key: YOUR_API_KEY" https://unavatar.io/instagram/kikobeats
x-pricing-tier: pro
x-proxy-tier: origin
x-unavatar-cost: 1
To upgrade, visit unavatar.io/checkout. After completing the payment, you'll receive an API key.
Providers
Apple Music
Get artwork for any Apple Music artist, album, or song. Search by name or look up directly by numeric Apple Music ID.
e.g., unavatar.io/apple-music/daft%20punk
The endpoint supports explicit type as part of the input.
If explicit type is not provided, it searches artist and song (in that order).
Available URI format inputs:
- artist
- by artist name: unavatar.io/apple-music/artist:daft%20punk
- by numeric artist ID: unavatar.io/apple-music/artist:5468295
- album
- by album name: unavatar.io/apple-music/album:discovery
- by album ID: unavatar.io/apple-music/album:78691923
- song
- by song name: unavatar.io/apple-music/song:harder%20better%20faster%20stronger
- by song ID: unavatar.io/apple-music/song:697195787
Bluesky
Get any Bluesky user's profile picture by their handle. Domain-style handles are supported.
Available inputs:
- User handle, e.g., unavatar.io/bluesky/pfrazee.com
- Domain handle, e.g., unavatar.io/bluesky/bsky.app
DeviantArt
Get any DeviantArt user's profile picture by their username.
Available inputs:
- Username, e.g., unavatar.io/deviantart/spyed
Dribbble
Get any Dribbble designer's profile picture by their username.
Available inputs:
- Username, e.g., unavatar.io/dribbble/omidnikrah
DuckDuckGo
Get the favicon or logo for any domain via DuckDuckGo's icon service. Useful as a fallback when a domain doesn't expose its favicon directly.
Available inputs:
- Domain, e.g., unavatar.io/duckduckgo/gummibeer.dev
GitHub
Get any GitHub user or organization's profile picture by their username.
Available inputs:
- User, e.g., unavatar.io/github/mdo
- Organization, e.g., unavatar.io/github/vercel
GitLab
Get any GitLab user or group's profile picture by their username.
Available inputs:
- User, e.g., unavatar.io/gitlab/sytses
- Group, e.g., unavatar.io/gitlab/inkscape
Get any LinkedIn user's profile picture by their public profile slug.
Available inputs:
- Profile slug, e.g., unavatar.io/linkedin/kikobeats
Get the favicon or logo for any domain using Google's favicon service.
Available inputs:
- Domain, e.g., unavatar.io/google/netflix.com
Gravatar
Get any user's avatar by their email address via Gravatar. The most widely used global avatar service — if your users have a Gravatar set up, this is the fastest way to retrieve it.
Available inputs:
- Email address, e.g., unavatar.io/gravatar/hello@microlink.io
Get any Instagram user's profile picture by
Related Skills
node-connect
336.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
82.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
336.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
82.9kCommit, push, and open a PR
