MQS™
PhotoShelter for Brands

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.

Built-in Export
No
Admin Required
API key (admin)
Best Output
JSON → CSV
Time to First Export
20-40 min
i
The short answer

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.

1

PhotoShelter for Brands REST API

TechnicalBest for: IT teams, developers, system administratorsOutput: JSON \u2192 CSV~20-30 minutes

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.

1
Get API credentials from your PhotoShelter for Brands admin panel. Navigate to Settings → Integrations → API to generate an API key or configure OAuth2 credentials with read access to the asset library.
2
Review your organization's custom metadata fields. Go to Settings → Custom Metadata to see the field names and dropdown values your team has configured. These will appear in the API response.
3
Run the Python script below to list all assets with their metadata and export to CSV. The script handles pagination automatically.
python
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")
Custom metadata fields are key
PhotoShelter for Brands supports custom metadata fields with controlled dropdown vocabularies. These are the organization-specific fields your team has configured (brand, campaign, sport, season, usage rights, etc.). The API returns these as key-value pairs. Make sure to include them in your export, as they represent the metadata your team actively manages and are not available through any other export method.
Including AI-generated tags
If your organization has enabled PhotoShelter's AI tagging modules, the API response may include tags from ObjectID (scene/object recognition), PeopleID (facial recognition), RosterID (jersey/player detection), and BrandID (logo detection). These AI-generated tags are accessible only through the API and are not embedded in the files themselves.
2

Admin Download Reports

EasyBest for: Quick audits, usage analytics, popular asset inventoryOutput: CSV~5 minutes

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.

1
Log in to your PhotoShelter for Brands admin panel with an administrator account.
2
Navigate to Analytics or Reports (location varies by plan tier). Look for the Download Log or Asset Activity report.
3
Configure the report parameters: date range, asset type filters, and any other available options.
4
Export the report as CSV. The file will include asset filenames, asset IDs, download counts, and basic file information.
!
Limited metadata coverage
Download reports are analytics-focused, not metadata-focused. The CSV includes filenames, asset IDs, and download activity, but does not include IPTC fields (title, description, keywords, copyright), custom metadata, or AI-generated tags. Use this method for a quick asset inventory or download audit. For comprehensive metadata, use the API method above.

What metadata fields can you export?

FieldREST APIDownload Reports
Asset ID
Filename
Title (IPTC)
Description / Caption (IPTC)
Keywords (IPTC)
Copyright (IPTC)
Creator (IPTC)
File typeLimited
File size
Dimensions (W x H)
Created date
Modified date
Custom metadata fields
AI-generated tags
Gallery / collection
Download count
Thumbnail URL
!
Known limitations
  • 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.

Get Your Free ReportSee How It Works

Exporting from another platform?

Google Drive
How to Export File Metadata from Google Drive
Dropbox
How to Export File Metadata from Dropbox
Box
How to Export File Metadata from Box
SharePoint
How to Export Document Metadata from SharePoint
Local Server
How to Export File Metadata from a Local Server
Amazon S3
How to Export Object Metadata from AWS S3
Adobe AEM
How to Export Asset Metadata from AEM
Salsify
How to Export Product Metadata from Salsify
Bynder
How to Export Asset Metadata from Bynder
Contentful
How to Export Content Metadata from Contentful
Airtable
How to Export Metadata from Airtable
Canto
How to Export Asset Metadata from Canto
Acquia DAM
How to Export Asset Metadata from Acquia DAM
Orange Logic
How to Export Asset Metadata from Orange Logic
PhotoShelter for Photographers
How to Export Image Metadata from PhotoShelter for Photographers