✓ Verified
✍️ Content Creation
✓ Enhanced Data
Unsplash
Search, browse, and download high-quality free photos from Unsplash's library of millions of images.
- Rating
- 4.4 (47 reviews)
- Downloads
- 4,310 downloads
- Version
- 1.0.0
Overview
Search, browse, and download high-quality free photos from Unsplash's library of millions of images.
Complete Documentation
View Source →Unsplash API
Search, browse, and download high-quality free photos from Unsplash's library of millions of images.Setup & Authentication
Get your Access Key
- Create account at https://unsplash.com/developers
- Register a new application
- Copy your Access Key (starts with your app name)
Store credentials
``bash
mkdir -p ~/.config/unsplash
echo "YOUR_ACCESS_KEY" > ~/.config/unsplash/access_key
chmod 600 ~/.config/unsplash/access_key
`
Or set environment variable:
`bash
export UNSPLASH_ACCESS_KEY="your_access_key_here"
`
Rate Limits
- Demo: 50 requests/hour
- Production: 5,000 requests/hour (after app approval)
- Only
/v1/messages endpoints count; image URLs (images.unsplash.com) don't
Common Operations
Search Photos
`bash
curl "https://api.unsplash.com/search/photos?query=nature&per_page=10" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
`
Parameters:
query: Search terms (required)
page: Page number (default: 1)
per_page: Results per page (default: 10, max: 30)
order_by: relevant (default) or latest
color: Filter by color (black_and_white, black, white, yellow, orange, red, purple, magenta, green, teal, blue)
orientation: landscape, portrait, or squarish
Get Random Photo
`bash
curl "https://api.unsplash.com/photos/random?query=coffee&count=1" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
`
Parameters:
query: Limit to search term (optional)
count: Number of photos (1-30, default: 1)
orientation: Filter by orientation
collections: Filter by collection IDs (comma-separated)
Get Photo Details
`bash
curl "https://api.unsplash.com/photos/PHOTO_ID" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
`
Returns full photo metadata including EXIF, location, user info, and all image URLs.
Track Download (Required!)
Important: You MUST trigger this endpoint when downloading a photo to comply with API guidelines.
`bash
curl "https://api.unsplash.com/photos/PHOTO_ID/download" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
`
This increments the download counter. Response includes the download URL.
List Editorial Feed
`bash
curl "https://api.unsplash.com/photos?per_page=10" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
`
Browse Collections
`bash
List all collections
curl "https://api.unsplash.com/collections?per_page=10" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
Get collection photos
curl "https://api.unsplash.com/collections/COLLECTION_ID/photos" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
`
User Photos
`bash
curl "https://api.unsplash.com/users/USERNAME/photos?per_page=10" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
`
Working with Images
Image URLs
Every photo response includes these URLs:
`json
{
"urls": {
"raw": "https://images.unsplash.com/photo-xxx?ixid=xxx",
"full": "...?ixid=xxx&q=80&fm=jpg",
"regular": "...?ixid=xxx&w=1080&fit=max",
"small": "...?w=400&fit=max",
"thumb": "...?w=200&fit=max"
}
}
`
Dynamic Resizing
Add parameters to any image URL (keep the ixid parameter!):
w=1500: Set width
h=800: Set height
dpr=2: Device pixel ratio
q=75: Quality (1-100)
fm=jpg: Format (jpg, png, webp, avif)
fit=crop: Fit mode (crop, max, clip)
crop=entropy: Crop mode
Example:
`
https://images.unsplash.com/photo-xxx?ixid=xxx&w=1500&h=1000&fit=crop&q=85
`
BlurHash Placeholders
Each photo includes a blur_hash field - a compact string representation for showing blurred placeholders while images load.
`json
{
"blur_hash": "LoC%a7IoIVxZ_NM|M{s:%hRjWAo0"
}
`
Response Structure
Photo Object (abbreviated)
`json
{
"id": "LBI7cgq3pbM",
"created_at": "2016-05-03T11:00:28-04:00",
"width": 5245,
"height": 3497,
"color": "#60544D",
"blur_hash": "LoC%a7IoIVxZ_NM|M{s:%hRjWAo0",
"description": "A man drinking coffee",
"urls": { "raw": "...", "full": "...", "regular": "..." },
"links": {
"download": "...",
"download_location": "https://api.unsplash.com/photos/xxx/download"
},
"user": {
"username": "johndoe",
"name": "John Doe",
"profile_image": { "small": "...", "medium": "...", "large": "..." }
}
}
`
Search Response
`json
{
"total": 133,
"total_pages": 7,
"results": [ / array of photo objects / ]
}
`
Best Practices
Attribution
Always attribute photos to their creators:
`
Photo by [Name] on Unsplash
`
Link to photographer's Unsplash profile when possible.
Download Tracking
- Call
/photos/:id/download before allowing users to download
- This is required by Unsplash API Guidelines
- Don't use it for just displaying images (that's tracked automatically via hotlinking)
Hotlinking
- You can hotlink images directly from
images.unsplash.com
- These don't count against rate limits
- Views are tracked automatically
- Always keep the
ixid parameter in URLs
Caching
- Public endpoints (search, photos) are cacheable
- Consider caching search results client-side to reduce API calls
Quick Reference
`bash
Store key
export UNSPLASH_ACCESS_KEY="your_key"
Search
curl "https://api.unsplash.com/search/photos?query=ocean&per_page=5" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
Random photo
curl "https://api.unsplash.com/photos/random?query=mountains" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
Get photo
curl "https://api.unsplash.com/photos/PHOTO_ID" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
Track download (required when downloading!)
curl "https://api.unsplash.com/photos/PHOTO_ID/download" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
`
Notes
- Base URL:
https://api.unsplash.com
- All responses are JSON
- Pagination via
page and per_page parameters
- Link headers provide first/prev/next/last page URLs
- Image requests to
images.unsplash.com don't count against rate limits
- Keep the
ixid parameter when using/manipulating image URLs
- For production use, apply for increased rate limits in your dashboard
Common Filters
Colors
black_and_white, black, white, yellow, orange, red, purple, magenta, green, teal, blue
Orientations
landscape, portrait, squarish
Sort Options
- Photos:
latest, oldest, popular
- Search:
relevant, latest
Error Handling
401 Unauthorized: Invalid or missing access key
403 Forbidden: Rate limit exceeded or forbidden action
404 Not Found: Photo/user/collection doesn't exist
Check X-Ratelimit-Remaining` header to monitor your rate limit status.Installation
Terminal bash
openclaw install unsplash
Copied!
Tags
#image_and-video-generation
Quick Info
Category Content Creation
Model Claude 3.5
Complexity One-Click
Author brokenwatch24
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
Ready to Install?
Get started with this skill in seconds
openclaw install unsplash
Related Skills
✓ Verified
💻 Development
4claw
4claw — a moderated imageboard for AI agents.
🧠 Claude-Ready
)}
★ 4.4 (118)
↓ 4,990
v1.0.0
✓ Verified
💻 Development
Aap Passport
Agent Attestation Protocol - The Reverse Turing Test.
🧠 Claude-Ready
)}
★ 4.3 (89)
↓ 4,621
v1.0.0
✓ Verified
💻 Development
Adaptive Suite
A continuously adaptive skill suite that empowers Clawdbot.
🧠 Claude-Ready
)}
★ 4.7 (88)
↓ 1,625
v1.0.0
✓ Verified
💻 Development
Adversarial Prompting
Adversarial analysis to critique, fix.
🧠 Claude-Ready
)}
★ 4.6 (372)
↓ 28,222
v1.0.0