Fine Art America APIfineartamerica.com ↗
Search millions of artworks, browse artist profiles, retrieve biographies, portfolio images, and contact form data from Fine Art America via 7 REST endpoints.
What is the Fine Art America API?
The Fine Art America API exposes 7 endpoints covering artwork search, artist directory browsing, profile details, biographies, portfolio images, and artist contact forms. Use search_artworks to run full-text queries across the platform and get back paginated artwork titles, image URLs, and linked artist info. Use get_artist_profile to retrieve social media links, a numeric member ID, and contact form availability for any artist on the site.
curl -X GET 'https://api.parse.bot/scraper/c3b479f4-3c49-4530-aec5-91ad833812ca/search_artworks?page=1&query=landscape' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace fineartamerica-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Fine Art America SDK — search artworks, browse artist directory, explore profiles."""
from parse_apis.fine_art_america_api import FineArtAmerica, ArtistNotFound
client = FineArtAmerica()
# Search for landscape artworks (paginated, capped at 5 total items)
for artwork in client.artworks.search(query="landscape", limit=5):
print(f"Artwork: {artwork.title} — {artwork.url}")
# Browse the artist directory
entry = client.artistdirectoryentries.list(limit=1).first()
print(f"Featured artist: {entry.name}, Location: {entry.location}, Joined: {entry.join_year}")
# Drill into the artist's full profile
artist = entry.profile()
print(f"Profile: {artist.name}, Member ID: {artist.member_id}, Contact: {artist.contact_available}")
# Read the artist's biography
bio = entry.about()
print(f"Bio: {bio.biography[:120]}")
# Browse the artist's artwork portfolio
for image in entry.images(limit=3):
print(f" Image: {image.title} — {image.image_url}")
# Get the contact form structure
form = artist.contact_form()
print(f"Form action: {form.action}, Fields: {[f.name for f in form.fields]}")
# Typed error handling for a non-existent artist
try:
client.artists.get(slug="nonexistent-artist-xyz-99999")
except ArtistNotFound as exc:
print(f"Not found: {exc.slug}")
print("Exercised: artworks.search / artistdirectoryentries.list / profile / about / images / contact_form / artists.get")Full-text search over artworks on Fine Art America. Returns paginated results with artwork titles, URLs, image URLs, and artist info. Results are ordered by relevance. Pagination via integer page counter.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| queryrequired | string | Search keyword (e.g. 'landscape', 'abstract', 'portrait') |
{
"type": "object",
"fields": {
"page": "integer - current page number",
"query": "string - the search keyword used",
"artworks": "array of artwork objects with title, url, image_url, and artist object (name, url)",
"has_next_page": "boolean - whether more pages are available"
},
"sample": {
"data": {
"page": 1,
"query": "landscape",
"artworks": [
{
"url": "https://fineartamerica.com/featured/aspen-sunset-over-bear-lake-colorado-captures.html",
"title": "Majestic Mountain Lake at Sunset Wall Art",
"artist": {
"url": null,
"name": "Unknown Artist"
},
"image_url": "https://render.fineartamerica.com/images/images-profile-flow/400/images/artworkimages/mediumlarge/1/aspen-sunset-over-bear-lake-mike-berenson.jpg"
}
],
"has_next_page": true
},
"status": "success"
}
}About the Fine Art America API
Artwork Search and Artist Discovery
The search_artworks endpoint accepts a required query string and an optional integer page parameter. Each response includes an artworks array where every object carries a title, url, image_url, and a nested artist object with name and url. The has_next_page boolean tells you whether additional pages exist. The get_artist_directory endpoint lets you browse all artists or filter by name using the keywords parameter. Each artist record in the returned artists array includes name, location, join_year, url, and slug — the slug is the key input for all profile-level endpoints.
Artist Profile and Portfolio Data
get_artist_profile takes a slug and returns the artist's display name, slug, member_id, profile_url, a social_links object keyed by platform (facebook, instagram, twitter, pinterest), and a contact_available boolean. get_artist_about returns the full biography text from the artist's About tab, or an empty string if none exists. get_artist_images pages through an artist's portfolio, returning up to approximately 24 artworks per page with title, url, and image_url per item.
Contact Form Discovery and Submission
get_artist_contact_form accepts the numeric artist_id from get_artist_profile and returns the form's action path, a fields array (each with name, type, and label), and the recaptcha_sitekey needed for Google reCAPTCHA v2 verification. Once you have a valid captcha token, submit_artist_contact_form accepts name, email, message, subject, artist_id, and captcha_token and returns a confirmation message string. This makes it possible to programmatically contact artists about commissions or inquiries.
The Fine Art America API is a managed, monitored endpoint for fineartamerica.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when fineartamerica.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official fineartamerica.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build an artwork discovery tool that searches by style keywords and displays results with thumbnail images from
search_artworks. - Aggregate artist contact details — social links and contact availability — from
get_artist_profilefor outreach campaigns. - Index artist biographies from
get_artist_aboutto power a searchable database of artist backgrounds and statements. - Compile full portfolio catalogs by paginating through
get_artist_imagesfor multiple artists. - Identify which artists have active contact forms using the
contact_availablefield before attempting outreach. - Track artist directory data over time — join year, location — by paginating
get_artist_directoryfor market research. - Automate commission inquiries by chaining
get_artist_contact_formandsubmit_artist_contact_formwith a valid reCAPTCHA token.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Fine Art America have an official developer API?+
What does `get_artist_profile` return beyond a name and URL?+
get_artist_profile returns the artist's member_id (numeric string used to query the contact form), a social_links object with keys for facebook, instagram, twitter, and pinterest, and a contact_available boolean indicating whether the artist has enabled a contact form on their profile.Does the API return artwork pricing or purchase data?+
How does pagination work across endpoints?+
search_artworks and get_artist_images both accept an integer page parameter and return a has_next_page boolean so you can walk through results. get_artist_directory also accepts page but does not currently return a has_next_page field, so you should increment the page counter until the artists array is empty or shorter than a full page.