Scrape Creative Commons images and audio by keyword, license, source or media ID. The Openverse Scraper pulls full metadata — title, creator, license + version, direct media URL, thumbnail, source page, tags, dimensions and a ready-to-use attribution string — for stock research, AI/ML datasets and CC media discovery. No API key, no login, no account on the data source required, and thousands of items per run.
This repository is documentation only. The scraper runs as a hosted Actor on the Apify platform — you never install or manage any code.
▶️ Open it on Apify and click Try for free.
The Openverse Scraper is a hosted extractor for openly licensed media. It searches a huge catalog of Creative Commons and public-domain images and audio aggregated from providers like Flickr, Wikimedia Commons, Rawpixel, StockSnap, the Smithsonian, The Met, Jamendo and Freesound — and returns clean, structured metadata plus a pre-formatted attribution sentence for every item. It is a practical Creative Commons media API alternative for building image/audio datasets without writing pagination code or managing keys.
Three modes are supported: images (keyword search or a broad default browse of CC images), audio (keyword search across CC music and sound), and detail (fetch full metadata for a single image by its Openverse UUID). Optional filters narrow results by CC license (CC0, CC BY, CC BY-SA, …), by usage rights (commercial, modification), by provider, and by file format.
Each media item becomes one row in your dataset:
| Field | Description |
|---|---|
id |
Openverse media UUID |
title |
Media title |
creator |
Author / creator of the media |
license |
CC license slug (e.g. by, by-sa, cc0) |
licenseVersion |
Version of the CC license (e.g. 2.0, 4.0) |
url |
Direct URL to the full media file |
thumbnail |
Thumbnail image URL |
foreignLandingUrl |
Media's page on the original provider |
source |
Provider slug the item came from (e.g. flickr, wikimedia) |
provider |
Underlying data provider |
tags |
Comma-separated tags / keywords |
fileType |
File format / extension (e.g. jpg, png, mp3) |
width / height |
Image dimensions in pixels (images) |
fileSize |
File size in bytes, when reported |
duration |
Audio duration in milliseconds (audio only) |
bitRate / sampleRate |
Audio bit rate and sample rate in Hz (audio only) |
attribution |
Ready-to-use attribution string |
- AI / ML training datasets — assemble large sets of CC0 or CC BY images (e.g. all landscape photos from Wikimedia) with clean metadata for computer-vision models.
- Stock media research — analyze which keywords, licenses and providers have the best coverage before a content project.
- Editorial & CMS galleries — auto-generate properly attributed image galleries with the built-in
attributionfield. - Podcast & video production — discover CC-licensed music and sound effects filtered by usage rights and format.
- License landscape analysis — measure the distribution of CC license types (BY, BY-SA, BY-NC, CC0, …) across sources.
- Archival & cataloging — bulk-collect CC media metadata for library, museum or research catalogs.
- Design asset pipelines — pull commercially usable, modifiable images filtered by
licenseType.
- Open the Openverse Scraper on Apify.
- Click Try for free. Leave the query empty to browse popular CC images, or enter a keyword and choose filters, then press Start.
- Open the Output / Storage tab and export as JSON, CSV or Excel — the
attributioncolumn is ready to paste.
npm install -g apify-cli
apify login
apify call logiover/openverse-scrapercurl -X POST \
"https://api.apify.com/v2/acts/logiover~openverse-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "mode": "images", "query": "mountain landscape", "license": "cc0", "maxResults": 500 }'import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('logiover/openverse-scraper').call({
mode: 'images',
query: 'ocean sunset',
license: 'by',
source: 'flickr',
maxResults: 500,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`${items.length} media items`);from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("logiover/openverse-scraper").call(run_input={
"mode": "audio",
"query": "ambient nature",
"license": "cc0",
"maxResults": 300,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["license"], item["url"])More detailed, copy-pasteable snippets live in examples/.
All fields are optional — an empty input browses a broad default listing of CC images.
| Field | Type | Default | Description |
|---|---|---|---|
mode |
string (dropdown) | images |
images, audio, or detail (single image by ID). |
query |
string | — | Search keyword(s) for images / audio modes. Leave empty to browse. |
imageId |
string | — | Openverse image UUID (detail mode only). |
license |
string (dropdown) | — | Filter by CC license: cc0, pdm, by, by-sa, by-nc, by-nd, by-nc-sa, by-nc-nd. |
licenseType |
string (dropdown) | — | Filter by usage: commercial, modification, all, all-cc. |
source |
string (dropdown) | — | Filter by provider: flickr, wikimedia, stocksnap, rawpixel, met, jamendo, freesound, and more. |
extension |
string (dropdown) | — | Filter by format: images jpg/png/gif/svg; audio mp3/ogg/flac/wav/mid. |
maxResults |
integer | 200 |
Max items to return (1–10000). |
proxyConfiguration |
object | Apify Proxy | Optional proxy configuration. |
Example — CC0 images from Wikimedia (high-quality public-domain set):
{
"mode": "images",
"query": "architecture",
"license": "cc0",
"source": "wikimedia",
"extension": "jpg",
"maxResults": 1000
}Example — fetch one image by ID (detail mode):
{
"mode": "detail",
"imageId": "8dac0234-5511-43f8-bcc7-0c6c0c41c83d"
}One JSON object per media item. Realistic sample record:
{
"id": "8dac0234-5511-43f8-bcc7-0c6c0c41c83d",
"title": "Mountain landscape",
"creator": "randihausken",
"license": "by-sa",
"licenseVersion": "2.0",
"url": "https://live.staticflickr.com/6083/6036144711_e2c3f202c5_b.jpg",
"thumbnail": "https://api.openverse.org/v1/images/8dac0234-5511-43f8-bcc7-0c6c0c41c83d/thumb/",
"foreignLandingUrl": "https://www.flickr.com/photos/46406832@N00/6036144711",
"source": "flickr",
"provider": "flickr",
"tags": "landscape, mountains, telemark",
"fileType": "jpg",
"width": 1024,
"height": 682,
"fileSize": 320145,
"duration": null,
"bitRate": null,
"sampleRate": null,
"attribution": "\"Mountain landscape\" by randihausken is licensed under CC BY-SA 2.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-sa/2.0/."
}- Schedules — capture newly indexed CC media on a weekly cadence with the Apify Scheduler.
- Webhooks — fire an HTTP callback on run success and fetch the dataset automatically.
- Google Sheets — stream results (with ready-to-paste attribution) to a spreadsheet.
- Amazon S3 / storage — export to your own bucket for dataset pipelines.
- Zapier, Make, n8n, Pipedream — trigger downstream workflows on run completion.
- MCP / AI agents — callable from the Apify MCP server so agents can gather licensed media during reasoning.
Every dataset can be exported as CSV, JSON, JSONL, Excel (XLSX) or XML from the Apify Console or via the Apify API.
Open the Openverse Scraper on Apify, enter a keyword (or leave it empty to browse), and run it. The data source needs no key or login — you only sign in to Apify.
Yes. Instead of writing pagination and metadata code, you run a hosted Actor that returns thousands of CC image/audio records per run — with license, source and a ready-to-use attribution string — billed per result.
Up to 10,000 per query via maxResults. For broader coverage, run several queries with different keywords, licenses or sources.
Any CC license slug: cc0, pdm, by, by-sa, by-nc, by-nd, by-nc-sa, by-nc-nd. Use licenseType to filter by usage rights (commercial or modification).
Filter by providers including Flickr, Wikimedia Commons, StockSnap, Rawpixel, the Smithsonian museums, The Met, Cleveland Museum of Art, Jamendo (audio), Freesound (audio) and more. Leave source empty for all.
Each run handles one mode. Run the Actor once with mode: images and once with mode: audio to cover both.
Not every provider supplies every field. width/height/fileSize may be null for some images, and duration/bitRate/sampleRate apply to audio only. creator can be null for anonymous uploads.
Run the Actor, open the Storage / Output tab, and click Export — choose CSV, Excel, JSON, JSONL or XML. The attribution column gives you paste-ready credit text.
Every item carries a Creative Commons or public-domain license. Always follow the specific license terms (attribution, share-alike, non-commercial, no-derivatives) for each item; the attribution field provides the required credit.
Set mode to detail and pass the Openverse UUID as imageId — useful for enriching a list of IDs from another source.
- Discogs Scraper — music release, artist and label metadata from the Discogs database.
- Wayback URL Scraper — pull archived URLs and snapshots for research alongside media discovery.
📄 Documentation only — the Actor runs on the Apify platform; this repo ships no scraper source code.
Released under the MIT License · © 2026 logiover