Overview
Shutterstock's API offers programmatic access to a digital content library comprising millions of licensed assets, including stock images, stock video, stock music, and editorial content. This API is designed for developers who need to integrate high-quality visual and audio media directly into their applications, platforms, or content management systems. Its primary users include marketing teams, web developers, content creators, and media organizations that require efficient access to a broad range of media for various uses, from advertising campaigns to news reporting.
The API facilitates comprehensive search capabilities, allowing users to query the extensive catalog using keywords, categories, and metadata filters. Developers can integrate these search functions to allow end-users to find and license specific content within their own applications. Beyond searching, the API supports the licensing and downloading of assets, enabling automated workflows for content acquisition.
Shutterstock's offerings extend beyond traditional stock media to include 3D models and an AI image generator, which can be accessed through their platform. The API primarily focuses on the core stock photography, video, and music collections, alongside editorial content. It is particularly well-suited for scenarios where a large volume of diverse media assets is regularly required, such as dynamic ad creation, automated content publication, or providing a rich media library within a SaaS product. For instance, a content management system could integrate the Shutterstock API for image search and direct embedding, streamlining the content creation process for its users. Similarly, a social media scheduling tool could use the API to provide users with a legal and diverse source of visuals.
For applications that require dynamic content updates or a continuous stream of fresh visual assets, Shutterstock's API provides a structured interface. The API's architecture and OAuth 2.0 authentication ensure secure and controlled access to licensed content, supporting various business models from individual content creators to large enterprise media operations. Integration allows for managing asset collections, tracking usage, and streamlining the licensing process, reducing manual overhead for content acquisition and rights management.
Key features
- Asset Search: Search Shutterstock's entire content library, including images, video, and audio, using keywords, categories, and advanced filters.
- Content Licensing: Programmatically license and purchase assets directly through the API, supporting various license types based on usage.
- Asset Download: Download licensed images, videos, and audio files in various resolutions and formats directly to your application or server.
- Editorial Content Access: Access a dedicated collection of editorial images and videos for news, sports, and entertainment reporting.
- Collection Management: Create, manage, and retrieve custom collections of assets within a Shutterstock account.
- Metadata Access: Retrieve detailed metadata for each asset, including keywords, descriptions, categories, and contributor information.
- API Analytics: Access usage data and analytics related to API calls and licensed content.
Pricing
Shutterstock offers various pricing models for its core products, including individual and team subscription plans. API access typically falls under custom enterprise pricing, which requires direct consultation with their sales team. As of May 2026, individual subscription plans for images start at $29/month for 10 images when billed annually.
| Plan Type | Description | Starting Price | API Access |
|---|---|---|---|
| Individual Image Subscription | Monthly image downloads for single users. | $29/month (10 images, annual billing) | Not included |
| Team Image Subscription | Shared image downloads for multiple users. | Varies by team size and volume | Not included |
| Video Subscription | Monthly video downloads. | Varies by volume | Not included |
| Enterprise API Access | Custom pricing for high-volume or integrated use cases. | Custom Quote | Included |
For detailed and up-to-date pricing information for subscriptions and enterprise solutions, refer to the Shutterstock pricing page.
Common integrations
- Content Management Systems (CMS): Integrate to allow users to search, license, and embed images directly into articles or web pages.
- Marketing Automation Platforms: Automate the selection and use of visuals for email campaigns, social media posts, and digital ads.
- Graphic Design Software: Provide direct access to Shutterstock's library within design tools for faster content creation.
- Digital Asset Management (DAM) Systems: Sync licensed assets from Shutterstock directly into an organization's DAM for centralized management.
- E-commerce Platforms: Populate product pages or marketing materials with high-quality stock photography and video.
- Social Media Management Tools: Facilitate the discovery and use of relevant visuals for scheduled social media content.
Alternatives
- Adobe Stock: Offers a wide range of creative assets integrated with Adobe Creative Cloud applications.
- Getty Images: Known for premium and editorial photography, particularly in news and sports.
- Unsplash: Provides a large library of high-resolution images available for free under its own license.
Getting started
To begin using the Shutterstock API, developers first need to register for an API key and set up OAuth 2.0 authentication. The following Python example demonstrates how to perform a basic image search using the Shutterstock API:
import requests
# Replace with your actual client ID and client secret
CLIENT_ID = 'YOUR_CLIENT_ID'
CLIENT_SECRET = 'YOUR_CLIENT_SECRET'
# Step 1: Obtain an access token (for client credentials grant type)
# In a real application, you would typically store and refresh this token.
token_url = 'https://api.shutterstock.com/v2/oauth/access_token'
token_data = {
'grant_type': 'client_credentials',
'client_id': CLIENT_ID,
'client_secret': CLIENT_SECRET
}
try:
token_response = requests.post(token_url, data=token_data)
token_response.raise_for_status() # Raise HTTPError for bad responses (4xx or 5xx)
access_token = token_response.json().get('access_token')
if not access_token:
print("Failed to get access token:", token_response.json())
exit()
print("Access token obtained successfully.")
except requests.exceptions.RequestException as e:
print(f"Error obtaining access token: {e}")
exit()
# Step 2: Perform an image search
search_url = 'https://api.shutterstock.com/v2/images/search'
headers = {
'Authorization': f'Bearer {access_token}'
}
params = {
'query': 'nature landscape',
'per_page': 5
}
try:
search_response = requests.get(search_url, headers=headers, params=params)
search_response.raise_for_status() # Raise HTTPError for bad responses (4xx or 5xx)
search_results = search_response.json()
print(f"Found {search_results.get('total_count', 0)} images.")
for i, image in enumerate(search_results.get('data', [])):
print(f"\nImage {i+1}:")
print(f" ID: {image.get('id')}")
print(f" Description: {image.get('description')}")
thumbnail_url = image.get('assets', {}).get('small_thumb', {}).get('url')
if thumbnail_url:
print(f" Thumbnail URL: {thumbnail_url}")
else:
print(" Thumbnail URL: Not available")
except requests.exceptions.RequestException as e:
print(f"Error performing image search: {e}")