Openverse Creative Commons Media Scraper: CC0 Images & Audio
Pricing
from $8.32 / 1,000 results
Openverse Creative Commons Media Scraper: CC0 Images & Audio
Search openly-licensed Creative Commons and public-domain images and audio from Openverse (Flickr, Wikimedia, museums, Jamendo). Every asset returns its license, human-readable label, ready-to-use attribution, provider and commercial-use flags. Export to JSON, CSV or Excel.
Pricing
from $8.32 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 hours ago
Last modified
Categories
Share
Openverse Creative Commons Media Scraper: CC0 Images & Audio
Search openly-licensed, royalty-free images and audio and get the license, attribution and source provenance for every asset, so you can reuse it legally. Here is one real result, with every field the actor returns:
{"id": "89f5ff02-d895-455c-9c9c-cd8dd934c8bf","mediaType": "image","title": "You Looking at Me? Mountains goats in Glacier National Park, Montana","creator": "U.S. Geological Survey","creatorUrl": "https://www.flickr.com/photos/27784370@N05","license": "cc0","licenseVersion": "1.0","licenseUrl": "https://creativecommons.org/publicdomain/zero/1.0/","licenseLabel": "CC0 1.0","commercialUse": true,"modificationsAllowed": true,"url": "https://live.staticflickr.com/5550/13974169513_5e21ce9b9a.jpg","thumbnail": "https://api.openverse.org/v1/images/89f5ff02-d895-455c-9c9c-cd8dd934c8bf/thumb/","foreignLandingUrl": "https://www.flickr.com/photos/27784370@N05/13974169513","provider": "flickr","source": "flickr","category": null,"width": 500,"height": 339,"filetype": null,"filesize": null,"durationMs": null,"bitRate": null,"sampleRate": null,"genres": null,"waveform": null,"tags": ["alpine", "climatechange", "glacier", "glaciernationalpark", "habitats", "mammals"],"tagCount": 10,"attribution": "\"You Looking at Me? Mountains goats in Glacier National Park, Montana\" by U.S. Geological Survey is marked with CC0 1.0. To view the terms, visit https://creativecommons.org/publicdomain/zero/1.0/.","relatedUrl": "https://api.openverse.org/v1/images/89f5ff02-d895-455c-9c9c-cd8dd934c8bf/related/","detailFetched": false,"aiAltText": null,"aiCaption": null,"aiSeoKeywords": null,"detailUrl": "https://api.openverse.org/v1/images/89f5ff02-d895-455c-9c9c-cd8dd934c8bf/","searchQuery": "mountain","observedAt": "2026-08-17T01:24:21.071Z"}
The complete Creative Commons media search in one actor. It returns openly-licensed and public-domain images and audio aggregated from Flickr, Wikimedia Commons, museums, Jamendo and more, and for every asset it gives you the exact license, a human-readable license label, a ready-to-use attribution string, and derived commercialUse and modificationsAllowed flags. That is what turns a random image URL into media you can safely reuse.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Use cases
- Quickstart
- Input reference
- Output reference
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches the Openverse catalog of openly-licensed media by keyword and writes one record per media item to the run's dataset. Choose images or audio, then narrow with filters for license code, commercial or modification usage, provider, category, file extension, image aspect ratio and size, and creator. Every record carries the direct file URL, thumbnail, original source page, provider and source, dimensions, tags, and the full licensing block: license, licenseVersion, licenseUrl, a human-readable licenseLabel such as CC BY-SA 4.0, a ready-to-paste attribution string, and the derived commercialUse and modificationsAllowed booleans so you instantly know how each asset may be used.
Two optional add-ons (paid Apify plans only) enrich each item. includeDetail fetches the per-item detail endpoint to add the complete tag set, a related-media link and any metadata the search list omits. withAiCaption generates accessibility alt text, an SEO caption and keywords from the item's title and tags. Note that the AI caption is produced from the item metadata only; the model does not see the image or audio itself. Missing values are always returned as null, never invented.
Use cases
- Royalty-free media libraries. Build a searchable library of CC0 images, public-domain photos and stock media that your team can reuse without licensing risk.
- Attribution-clean blogging and design. Grab commercially-usable stock photos with a ready-made credit line for blog posts, presentations, newsletters and social media.
- ML and AI training datasets. Assemble openly-licensed image and audio datasets for machine learning, filtered to
commercialUseandmodificationsAllowedso the training data is safe to use. - Accessibility and SEO. Use the AI caption add-on to generate alt text and SEO keywords for every reused asset.
- Licensing compliance audits. Verify the license, version and attribution requirement of media before publishing, at scale.
- Music and sound sourcing. Find Creative Commons audio, tracks and sound effects for videos, podcasts and games with duration, genre and license in every row.
Quickstart
Open the actor, paste this into the input, and press Run. It returns up to 50 CC0 (public-domain) photographs of mountains.
{"mediaType": "image","query": "mountain","license": "cc0","maxResults": 50}
Change query to any keyword, switch mediaType to audio for music and sound, or set licenseType to commercial to restrict to commercially-usable media. Every filter is optional.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
mediaType | string | no | image | Which catalog to search: image or audio. |
query | string | no | mountain | Keywords to search for, for example sunset, jazz, vintage poster. |
license | string | no | cc0 | Comma-separated Creative Commons license codes: cc0, pdm, by, by-sa, by-nc, by-nd, by-nc-sa, by-nc-nd. |
licenseType | string | no | (any) | Usage filter: commercial, modification, or both. |
source | string | no | (any) | Restrict to one provider, for example flickr, wikimedia, jamendo, freesound, met. |
category | string | no | (any) | Content category. Images: photograph, illustration, digitized_artwork. Audio: music, sound_effect, podcast, audiobook, news. |
extension | string | no | (any) | File type. Images: jpg, png, gif, svg. Audio: mp3, ogg, flac, wav. |
aspectRatio | string | no | (any) | Image shape: tall, wide, square. |
size | string | no | (any) | Image resolution: small, medium, large. |
creator | string | no | (any) | Only return media by this creator or artist name. |
maxResults | integer | no | 50 | Maximum number of media items to collect across all pages. |
includeDetail | boolean | no | false | Paid add-on. Enrich each item from its detail endpoint (full tags, related media, extra metadata). Billed per item on a successful detail fetch. |
withAiCaption | boolean | no | false | Paid AI add-on. Generate alt text, an SEO caption and keywords from the item's title and tags. Billed per item captioned. |
Output reference
One dataset item per media asset. Types: string, integer, boolean, string[], or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
id | string | Openverse media item ID. |
mediaType | string | image or audio. |
title | string | Media title. |
creator | string | Creator or artist name, or null. |
creatorUrl | string | Creator profile URL, or null. |
license | string | Creative Commons license code, for example by-sa. |
licenseVersion | string | License version, for example 4.0. |
licenseUrl | string | URL of the license deed. |
licenseLabel | string | Human-readable label, for example CC BY-SA 4.0 or CC0 1.0. |
commercialUse | boolean | Whether the license allows commercial use (derived from the license code). |
modificationsAllowed | boolean | Whether the license allows modifications or derivatives (derived from the license code). |
url | string | Direct URL of the media file. |
thumbnail | string | Thumbnail image URL. |
foreignLandingUrl | string | Original source page URL. |
provider | string | Aggregated provider, for example flickr, wikimedia. |
source | string | Original media source. |
category | string | Content category, or null. |
width | integer | Image width in pixels, or null. |
height | integer | Image height in pixels, or null. |
filetype | string | File type, for example jpg, mp3, or null. |
filesize | integer | File size in bytes, or null. |
durationMs | integer | Audio duration in milliseconds (audio only), or null. |
bitRate | integer | Audio bit rate (audio only), or null. |
sampleRate | integer | Audio sample rate (audio only), or null. |
genres | string[] | Audio genres (audio only), or null. |
waveform | string | Audio waveform data URL (audio only), or null. |
tags | string[] | Tag names describing the media. |
tagCount | integer | Number of tags. |
attribution | string | Ready-to-use attribution / credit string. |
relatedUrl | string | URL for related media. |
detailFetched | boolean | Whether the detail add-on enriched this item. |
aiAltText | string | AI-generated accessibility alt text when the add-on is enabled, else null. |
aiCaption | string | AI-generated SEO caption when the add-on is enabled, else null. |
aiSeoKeywords | string[] | AI-generated SEO keywords when the add-on is enabled, else null. |
detailUrl | string | Openverse detail endpoint URL for this item. |
searchQuery | string | Search query that produced this record. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | Present only on a failed run; a single item with a populated error field is written instead. |
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~openverse-cc-media-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"mediaType":"image","query":"mountain","license":"cc0","maxResults":50}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~openverse-cc-media-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"mediaType":"audio","query":"jazz","license":"cc0,by","maxResults":200}'
Apify CLI:
apify call scrapers_lat/openverse-cc-media-scraper \--input '{"mediaType":"image","query":"sunset","licenseType":"commercial"}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per media item returned (
resultevent). See the pricing tab for the current per-result price. - Add-ons billed separately.
detailis charged per item only on a successful detail fetch, andai_captionis charged per item only when the model returns usable output. Both add-ons are opt-in and available on paid Apify plans only. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty and zero-result runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 items per run and cannot use the paid add-ons. Upgrade for higher
maxResults.
FAQ and troubleshooting
Is the media really free to use?
Yes, subject to its license. Every record includes the license code, a human-readable label and the exact attribution string. Assets marked commercialUse: true and modificationsAllowed: true are the most permissive. Public-domain items (cc0, pdm) need no attribution, though crediting the creator is good practice.
How are commercialUse and modificationsAllowed decided?
They are derived from the Creative Commons license code: commercialUse is false when the license carries the NonCommercial (nc) term, and modificationsAllowed is false when it carries the NoDerivatives (nd) term. Always confirm against the linked licenseUrl for your specific use.
Can I search audio as well as images?
Yes. Set mediaType to audio to search Creative Commons music, tracks and sound effects, with durationMs, bitRate, genres and a waveform link on each row.
What does the AI caption add-on actually see? It generates alt text, a caption and SEO keywords from the item's title and tags only. It does not analyze the image or audio file itself, so treat the output as metadata-derived assistance.
A run returned 0 records. Why?
Your query and filters matched no media. Try a broader keyword or remove filters such as license, source or extension. Zero-result runs are not charged.
Is this an official Openverse or Creative Commons tool? No. This actor is independent and has no affiliation with Openverse, WordPress or Creative Commons. It reads only openly-licensed media metadata that is publicly available.
Related scrapers
- Discogs Scraper: Music releases, artists and marketplace data.
- TikTok Creative Center Scraper: Trending sounds, hashtags and ads.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for public platforms: company registries, government data, finance, e-commerce, media and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Openverse, WordPress or Creative Commons. Accesses only publicly available openly-licensed media metadata.
