How to Export Asset Metadata from PhotoShelter for Brands
PhotoShelter for Brands is an enterprise DAM used by marketing teams, sports organizations, and universities. Here's how to extract your asset metadata into a spreadsheet for quality assessment.
PhotoShelter for Brands does not have a one-click metadata export to CSV. The most comprehensive approach is to use the PhotoShelter for Brands REST API to query your asset library and write IPTC metadata, custom metadata fields, and AI-generated tags to a CSV file. Admin download reports provide limited asset activity data as CSV, useful for quick inventories.
PhotoShelter for Brands REST API
The PhotoShelter for Brands API provides full read access to your asset library, including IPTC fields, custom metadata, AI-generated tags (ObjectID, PeopleID, RosterID, BrandID), file properties, and timestamps. No files are downloaded; only metadata is retrieved.
import requests
import csv
import time
ORG_URL = "https://your-org.photoshelter.com"
API_KEY = "your_api_key"
HEADERS = {
"X-PS-Api-Key": API_KEY,
"Accept": "application/json",
}
# Authenticate
auth = requests.post(
f"{ORG_URL}/psapi/v4/mem/authenticate",
headers=HEADERS,
json={
"email": "your_admin_email@company.com",
"password": "your_password",
},
)
token = auth.json()["data"]["attributes"]["token"]
HEADERS["X-PS-Auth-Token"] = token
def list_all_assets():
"""List all assets with metadata via pagination."""
all_assets = []
page = 1
per_page = 100
while True:
resp = requests.get(
f"{ORG_URL}/psapi/v4/mem/images",
headers=HEADERS,
params={
"page": page,
"per_page": per_page,
},
)
data = resp.json()
assets = data.get("data", [])
if not assets:
break
all_assets.extend(assets)
page += 1
if len(assets) < per_page:
break
time.sleep(0.5) # respect rate limits
return all_assets
assets = list_all_assets()
with open("photoshelter_brands_metadata.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow([
"Asset ID", "Filename", "Title", "Description",
"Keywords", "Copyright", "Creator",
"File Type", "File Size", "Width", "Height",
"Created", "Modified", "Custom Metadata", "AI Tags",
])
for asset in assets:
attrs = asset.get("attributes", {})
iptc = attrs.get("iptc", {})
custom = attrs.get("custom_metadata", {})
ai = attrs.get("ai_tags", [])
writer.writerow([
asset.get("id", ""),
attrs.get("file_name", ""),
iptc.get("title", ""),
iptc.get("caption", ""),
"; ".join(iptc.get("keywords", [])),
iptc.get("copyright", ""),
iptc.get("creator", ""),
attrs.get("file_type", ""),
attrs.get("file_size", ""),
attrs.get("width", ""),
attrs.get("height", ""),
attrs.get("created_at", ""),
attrs.get("updated_at", ""),
"; ".join(
f"{k}: {v}" for k, v in custom.items()
) if custom else "",
"; ".join(ai) if ai else "",
])
print(f"Exported {len(assets)} assets to photoshelter_brands_metadata.csv")Admin Download Reports
PhotoShelter for Brands provides download activity reports from the admin panel. These reports export as CSV and include asset identifiers, filenames, and download counts. While not a full metadata export, they provide a quick asset inventory for initial assessment or to identify your most-accessed assets.
What metadata fields can you export?
| Field | REST API | Download Reports |
|---|---|---|
| Asset ID | ✓ | ✓ |
| Filename | ✓ | ✓ |
| Title (IPTC) | ✓ | ✕ |
| Description / Caption (IPTC) | ✓ | ✕ |
| Keywords (IPTC) | ✓ | ✕ |
| Copyright (IPTC) | ✓ | ✕ |
| Creator (IPTC) | ✓ | ✕ |
| File type | ✓ | Limited |
| File size | ✓ | ✕ |
| Dimensions (W x H) | ✓ | ✕ |
| Created date | ✓ | ✕ |
| Modified date | ✓ | ✕ |
| Custom metadata fields | ✓ | ✕ |
| AI-generated tags | ✓ | ✕ |
| Gallery / collection | ✓ | ✕ |
| Download count | ✕ | ✓ |
| Thumbnail URL | ✓ | ✕ |
- Custom metadata stays inside PhotoShelter. Custom metadata fields and their controlled vocabulary values exist only within the PhotoShelter for Brands platform. When files are downloaded, custom metadata is not embedded in the file. The API is the only way to export these fields.
- AI tags are not embedded in files. Tags generated by ObjectID, PeopleID, RosterID, and BrandID are stored within PhotoShelter only. They are accessible through the API but are never written into the file's IPTC or XMP metadata.
- IPTC is not re-embedded in RAW downloads. If your library contains RAW files, IPTC edits made within PhotoShelter may not carry over if the files are downloaded. XMP sidecar files are the recommended alternative for RAW metadata.
- Custom metadata fields allow one tag per field. Each custom metadata dropdown field supports a single selected value per asset. If your organization needs multi-value tagging, those values are typically stored in IPTC Keywords instead.
- API access varies by plan. API availability and rate limits depend on your PhotoShelter for Brands subscription tier. Contact your account representative for API documentation and access credentials.
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.