Tattoo Artist Directory Scraper - Tattoodo.com
Tattoodo Tattoo Artist Directory Scraper
Scrape verified tattoo-artist profiles from Tattoodo — the global tattoo discovery platform. Returns artist name, studio name and address, primary and secondary tattoo styles, hourly and minimum rates, ratings, review counts, biography, social links, geo-coordinates, and ~25 other fields per profile.
The actor walks Tattoodo's public partners sitemap (~1,600 verified artists across the US, UK, EU, LATAM, and APAC), fetches each profile, and extracts structured data from the page's embedded state blob with JSON-LD as a fallback. No proxy. No browser. Server-rendered HTML, parsed once per artist.
Tattoodo Scraper Features
- Returns artist name, username, studio name, full address, city, country, and timezone
- Extracts primary and secondary tattoo styles — Black & Gray, Realism, Traditional, Neo Traditional, Blackwork, Fineline, Watercolor, Japanese, Dotwork, Geometric, Lettering, and a long tail
- Captures hourly rate, minimum charge, daily rate, and Tattoodo's symbolic price tier ($–$$$$)
- Returns review count, average rating (0–5), portfolio size, and verification level
- Surfaces booking availability — whether the artist takes bookings through Tattoodo and their typical response time
- Parses Instagram, TikTok, and personal-website links from the artist's social block
- Filters by country code, by style slug, or by bookable-only artists
- Sitemap-driven discovery. The actor finds every verified artist in the public directory, then narrows to the slice you asked for.
- No proxy required. Runs at eight concurrent requests against CloudFront-fronted HTML.
Who Uses Tattoo Artist Data?
- Booking-software vendors (Booksy, Squire, GlossGenius) — build outbound lists of bookable artists segmented by country and price tier.
- Tattoo-supply wholesalers (Eternal Ink, FK Irons, Electrum) — qualify shops by hourly rate as a proxy for premium-supply purchase intent.
- Specialty insurance brokers — source verified artists for outreach on shop and apprenticeship coverage.
- Apprenticeship programs and trade schools — find established artists by region and style for partnership and referral programs.
- Payment processors — target the long tail of independent artists who accept bookings online and need card processing built for the trade.
- Travel and tourism platforms — assemble curated artist directories by city for tattoo-tourism content.
How the Tattoodo Scraper Works
- The actor fetches Tattoodo's sitemap index and pulls the partners sitemap, which lists every verified artist profile URL.
- URLs are deterministically shuffled and sliced down to a target count. When filters are tight, the actor over-collects so enough records survive after the country, style, or bookable filter is applied.
- Each profile page is fetched once. The actor parses the embedded state blob, falls back to the JSON-LD block when the blob is missing, and writes one cleaned record per artist.
- The run stops as soon as
maxItemsis hit. No babysitting, no manual pagination.
Tattoodo Scraper Input
| Field | Type | Default | Description |
|---|---|---|---|
maxItems |
integer | 10 |
Maximum number of artist profiles to return. The verified-artist directory has ~1,600 records — set higher for fuller harvests. |
countries |
array | [] |
ISO 3166-1 alpha-2 country codes to keep (e.g. ["US", "GB", "DE"]). Empty = all countries. |
styles |
array | [] |
Tattoo styles to keep (case-insensitive substring match against style slugs and labels). Empty = all styles. |
bookableOnly |
boolean | false |
When true, returns only artists who accept bookings through Tattoodo. |
Input Examples
Default — first 10 verified artists, no filters:
{
"maxItems": 10
}
US-based artists, bookable only:
{
"countries": ["US"],
"bookableOnly": true,
"maxItems": 100
}
Realism specialists across the UK and Germany:
{
"countries": ["GB", "DE"],
"styles": ["realism"],
"maxItems": 50
}
Full harvest of every verified artist:
{
"maxItems": 2000
}
Tattoodo Scraper Output Fields
{
"shopOrArtistName": "Ben Twentyman",
"username": "ben_tattoos",
"kind": "artist",
"biography": "Meet Ben, a tattoo artist based in Manchester with a passion for tattooing animals, florals, anything nerdy...",
"verificationLevel": 3,
"primaryStyles": "Black & Gray",
"secondaryStyles": "Dotwork, Anime, Neo Traditional, Floral, New School, Blackwork, Fineline, Realism",
"specialties": null,
"features": null,
"hourlyRate": "90 GBP",
"minimumRate": "60 GBP",
"dailyRate": null,
"priceTier": "£",
"portfolioSize": 208,
"reviewCount": 95,
"reviewAverage": 5,
"bookingsAllowed": true,
"availability": "Next week",
"responseTime": "2 days",
"shopName": "116",
"address": "15 pollard yard east, Manchester, Manchester",
"city": "Manchester",
"country": "GB",
"timezone": "Europe/London",
"phone": null,
"latitude": 53.4848325,
"longitude": -2.2135438,
"socialLinks": null,
"instagram": null,
"tiktok": null,
"website": null,
"imageUrl": "https://d1kq2dqeox7x40.cloudfront.net/images/profile-images/2cc3058c-b2f0-44a8-b033-90878f49b9c4.jpeg",
"profileUrl": "https://www.tattoodo.com/artists/ben_tattoos",
"scrapedAt": "2026-05-01T23:14:59.978Z"
}
| Field | Type | Description |
|---|---|---|
shopOrArtistName |
string | Display name of the artist |
username |
string | Tattoodo username slug used in the canonical profile URL |
kind |
string | Record type — currently always artist. Tattoodo's studio endpoint redirects, so the public directory is artists-only. |
biography |
string | Artist biography / about-me text |
verificationLevel |
integer | Tattoodo's verification tier (0–3). Verified artists have demonstrated professional experience and safety standards. |
primaryStyles |
string | Comma-separated primary tattoo styles |
secondaryStyles |
string | Comma-separated secondary tattoo styles |
specialties |
string | Comma-separated specialties listed by the artist (often empty) |
features |
string | Comma-separated artist features (e.g. Cover-ups, Vegan Ink, Experience tattooing darker skin) |
hourlyRate |
string | Hourly rate as a currency-tagged string (e.g. $120, 90 GBP). Empty when not disclosed. |
minimumRate |
string | Minimum charge per session as a currency-tagged string |
dailyRate |
string | Daily rate as a currency-tagged string. Often empty. |
priceTier |
string | Symbolic price tier — $, $$, $$$, or $$$$ |
portfolioSize |
integer | Number of portfolio pieces on the artist's profile |
reviewCount |
integer | Number of reviews backing the rating |
reviewAverage |
number | Average review score on a 0–5 scale |
bookingsAllowed |
boolean | Whether the artist accepts bookings through Tattoodo |
availability |
string | Earliest availability hint (e.g. Next week, 3-6 months) |
responseTime |
string | Typical response-time hint (e.g. 2 days, a few hours) |
shopName |
string | Name of the studio the artist works out of |
address |
string | Street address of the primary studio |
city |
string | City of the primary studio |
country |
string | ISO 3166-1 alpha-2 country code. Falls back to a timezone lookup when the source field is empty. |
timezone |
string | IANA timezone of the primary studio (e.g. Europe/London) |
phone |
string | Studio phone number, when published |
latitude |
number | Primary-studio latitude |
longitude |
number | Primary-studio longitude |
socialLinks |
string | Comma-separated social-media URLs |
instagram |
string | Instagram handle parsed from social links |
tiktok |
string | TikTok handle parsed from social links |
website |
string | Personal or studio website URL parsed from social links |
imageUrl |
string | Profile image URL |
profileUrl |
string | Canonical Tattoodo profile URL |
scrapedAt |
string | ISO timestamp when the record was scraped |
FAQ
How do I scrape tattoo artists from Tattoodo?
Tattoodo Scraper handles it. Set maxItems, optionally add a country or style filter, and run. The actor pulls the public partners sitemap, fetches each profile, and writes structured JSON. No login, no proxy, no manual pagination.
How much does Tattoodo Scraper cost to run?
Tattoodo Scraper uses pay-per-event pricing. $0.10 per actor start plus $0.001 per record returned. A 1,000-record harvest costs about $1.10, which is less than most people spend on coffee while waiting for slower scrapers to finish.
What data can I get from a Tattoodo profile?
Tattoodo Scraper returns about 30 fields per artist — name, studio, address with lat/long, primary and secondary styles, hourly and minimum rates, price tier, ratings, review count, portfolio size, biography, booking availability, response time, social handles when published, and the canonical profile URL. The full schema is documented in the table above.
Can I filter by tattoo style or country?
Tattoodo Scraper supports both. Pass an array of country codes (["US", "GB"]), style slugs (["realism", "blackwork"]), or both. Filters are applied after extraction so style matching covers primary and secondary styles together.
Does Tattoodo Scraper need proxies?
Tattoodo Scraper does not need proxies. Tattoodo serves its profile pages from CloudFront with no Cloudflare WAF or CAPTCHA on the artist directory, so the scraper runs cleanly with default headers.
How fresh is the data?
Tattoodo Scraper pulls live HTML on every run. The sitemap's lastmod updates daily, and profile data — rates, availability, styles — reflects whatever the artist last edited.
Need More Features?
Need additional fields, a different source, or a custom filter? File an issue or get in touch.
Why Use Tattoodo Scraper?
- Affordable — $0.001 per record. A 1,600-artist full harvest comes out to under $2.
- Clean output — every record carries the same ~30 fields with consistent types, normalized country codes, and a timezone-derived country fallback for entries Tattoodo left blank. Less data cleanup, more analysis.
- Filter-first design — country, style, and bookable-only filters apply post-extraction, so a tight filter still returns the slice you asked for without you scraping the whole directory by hand.