How to Export Asset Metadata from Canto
Canto is a popular DAM for mid-market and enterprise teams. Here's how to extract your asset metadata into a spreadsheet for quality assessment.
Canto has a built-in metadata export feature. Select items in the library, choose export metadata, and download a CSV of their properties. For more comprehensive or automated exports, Canto's reporting features and REST API provide additional flexibility.
Canto Library — Metadata Export
Canto allows users to select items in the library and extract their metadata as a CSV or Excel file — no actual files are downloaded, only the metadata. This is the fastest way to get a metadata spreadsheet with no technical setup required.
Canto Reports
Canto includes reporting capabilities that generate asset inventory and usage reports. Reports can include metadata summaries, upload activity, download statistics, and more. Available from the Canto admin panel.
Canto REST API
The Canto API provides full access to asset data including metadata fields, custom fields, tags, categories, and usage information. It supports searching, filtering, and pagination for large libraries.
import requests
import csv
CANTO_DOMAIN = "your-org.canto.com"
ACCESS_TOKEN = "your_access_token"
HEADERS = {"Authorization": f"Bearer {ACCESS_TOKEN}"}
def search_assets(keyword="*", limit=100):
"""Search all assets with pagination."""
all_assets = []
start = 0
while True:
resp = requests.get(
f"https://{CANTO_DOMAIN}/api/v1/search",
headers=HEADERS,
params={
"keyword": keyword,
"limit": limit,
"start": start,
"scheme": "image,video,document,audio,presentation,other",
"sortBy": "time",
"sortDirection": "descending",
},
)
data = resp.json()
results = data.get("results", [])
if not results:
break
all_assets.extend(results)
start += limit
if start >= data.get("found", 0):
break
return all_assets
assets = search_assets()
with open("canto_metadata.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow([
"ID", "Name", "Description", "Scheme", "Size",
"Width", "Height", "Created", "Modified",
"Tags", "Categories", "Copyright"
])
for asset in assets:
default = asset.get("default", {})
writer.writerow([
asset.get("id", ""),
asset.get("name", ""),
default.get("Description", ""),
asset.get("scheme", ""),
asset.get("size", ""),
default.get("Image Width", ""),
default.get("Image Height", ""),
default.get("Date uploaded", ""),
default.get("Date modified", ""),
", ".join(asset.get("tag", [])) if asset.get("tag") else "",
", ".join(
cat.get("name", "") for cat in asset.get("relatedCategories", [])
) if asset.get("relatedCategories") else "",
default.get("Copyright", ""),
])
print(f"Exported {len(assets)} assets to canto_metadata.csv")What metadata fields can you export?
| Field | UI Export | Reports | Canto API |
|---|---|---|---|
| Asset name | ✓ | ✓ | ✓ |
| Description | ✓ | ✓ | ✓ |
| File type / scheme | ✓ | ✓ | ✓ |
| File size | ✓ | ✓ | ✓ |
| Dimensions (W x H) | ✓ | ✓ | ✓ |
| Upload date | ✓ | ✓ | ✓ |
| Modified date | ✓ | ✓ | ✓ |
| Tags | ✓ | ✓ | ✓ |
| Categories | ✓ | ✓ | ✓ |
| Custom fields | ✓ | If configured | ✓ |
| Copyright | ✓ | ✓ | ✓ |
| Approval status | ✓ | ✓ | ✓ |
| Album membership | ✕ | ✕ | ✓ |
| Download count | ✕ | ✓ | ✓ |
| EXIF data (photos) | ✓ | ✕ | ✓ |
| Preview / thumbnail URL | ✕ | ✕ | ✓ |
- Custom field names: Canto custom fields are defined by your admin. The API returns them under the
defaultobject with their configured names. Verify field names in your Canto admin settings before building export scripts. - EXIF and embedded metadata: Canto extracts EXIF, IPTC, and XMP data from uploaded files. These fields are available in the UI export and API but may use different field names than the original embedded metadata.
- Canto Classic vs. Canto (New): If your organization is still on Canto Classic (formerly Canto Cumulus), the API endpoints and export features differ significantly. This guide covers the current Canto cloud platform.
You have your metadata export.
Now score it.
Upload your CSV or Excel file to MQS and get a structural metadata health score out of 100 with dimension breakdowns and actionable diagnostics.