TikTok Ads Library Scraper — EU Library & Creative Center
Pricing
from $15.00 / 1,000 results
TikTok Ads Library Scraper — EU Library & Creative Center
Scrape TikTok Ads Library (EU/EEA/UK) and Creative Center (global). Extract ad creatives, targeting data, reach estimates, CTR, video URLs, and industry insights. Dual-source coverage — no login required. Residential proxies built-in.
Pricing
from $15.00 / 1,000 results
Rating
0.0
(0)
Developer
Yuliia Kulakova
Maintained by CommunityActor stats
1
Bookmarked
411
Total users
83
Monthly active users
3 days ago
Last modified
Categories
Share
Spy · Analyze · Outperform
The only TikTok ad scraper that covers both the EU Ads Library and the global Creative Center —
targeting data, reach estimates, CTR, video URLs, and industry insights. All in one run.
Why this one? · Data sources · Input · Output · Use cases · Pricing · What's new · Limitations
TikTok Ads Library Scraper pulls ad data from two complementary TikTok sources:
- TikTok Ads Library — TikTok's official DSA transparency database for EU/EEA/UK. No login required. Returns targeting details, audience reach, and ad creatives for all ads shown in Europe.
- TikTok Creative Center — TikTok's global top-performing ads showcase. Covers US, APAC, LATAM, and every other market. Returns CTR, engagement metrics, video URLs, and industry data.
Both sources are public and require no TikTok account.
🙏 Does this Actor save you time?
It is built and maintained by one developer. A rating on the Store page takes ten seconds and is the only signal new users have — it genuinely decides whether this Actor gets found at all.
Something missing, unclear, or not working the way you need? Please open an Issue. I read every one, reply within a day, and ship changes fast. Shipped just this week: deep pagination for large searches, full targeting breakdowns, ad copy and landing pages for EU Library ads, and precise Video / Image / Text filtering.
Missing a field or a country? Ask — most requests are a small change.
✨ What makes this different
| Feature | This actor | Most others |
|---|---|---|
| Covers both Ads Library + Creative Center | ✅ dual-source | ❌ one source only |
| Global coverage via Creative Center (US, APAC, LATAM…) | ✅ | ❌ EU-only |
EU DSA reach estimates (uniqueUsersSeen, usersTargetedEstimate) | ✅ | ❌ |
| CTR and engagement metrics (Creative Center) | ✅ | ❌ |
| Video CDN URLs + thumbnail | ✅ | Partial |
| Industry + campaign objective (Creative Center) | ✅ | ❌ |
| Landing page URL + CTA button for EU Library ads | ✅ | ❌ |
| Impressions by country × age × gender | ✅ opt-in | ❌ |
| Rejected ads flagged with TikTok's stated reason | ✅ | ❌ |
| Graceful handling of rate limits (429/403 logging) | ✅ | Silent failures |
| Warns when 3,600-result cap is reached | ✅ | No warning |
| Zero-result detection — no wasted compute | ✅ | ❌ |
| Residential proxies built-in (required for TikTok) | ✅ | ❌ |
📡 Data sources explained
Source 1 — TikTok Ads Library (library)
| Property | Detail |
|---|---|
| URL | https://library.tiktok.com/ |
| Login required | ❌ No |
| Coverage | EU-27 + EEA (IS, LI, NO) + Switzerland + UK |
| Why EU only? | Mandated by EU Digital Services Act (DSA), Article 39 |
| Result cap | 3,600 ads per query (TikTok platform limit — 300 pages × 12 ads) |
| Unique fields | targetAgeGroups, targetGender, targetInterests, targetBehaviors, uniqueUsersSeen, uniqueUsersSeenByCountry, adPaidForBy, rejectedInCountries |
Use this source when: you want DSA transparency data — who targeted whom, with what message, reaching how many people in Europe.
Source 2 — TikTok Creative Center (creative_center)
| Property | Detail |
|---|---|
| URL | https://ads.tiktok.com/business/creativecenter/ |
| Login required | ❌ No |
| Coverage | Global — US, GB, AU, BR, JP, KR, IN, and 50+ more |
| Data type | Top-performing ads (sorted by CTR and engagement) |
| Unique fields | ctr, likes, industry, industryCode, campaignObjective, videoMetrics |
Use this source when: you want global competitive intelligence — what's performing best in your category, market, or country right now.
TikTok serves a curated subset of Top Ads to logged-out visitors, so a Creative Center run may return fewer ads than
maxResults. The Actor states this in the run log rather than leaving you guessing.
Source 3 — Both (both)
Runs both sources in a single actor run. Results are deduplicated automatically. Each result includes a source field so you always know where the data came from.
⚙️ Input
| Field | Type | Default | Description |
|---|---|---|---|
source | string | "library" | library · creative_center · both |
searchTerms | string[] | ["Nike"] | Keywords or brand names (library source only) |
countries | string[] | ["DE"] | ISO 2-letter codes, case-insensitive. Library: EU/EEA/UK only — others are skipped with a warning. Creative Center: any country. |
adType | string | "ALL" | ALL · VIDEO · IMAGE · TEXT — applied by TikTok server-side |
dateFrom | string | — | Show ads first seen on/after this date (YYYY-MM-DD). Library only. |
dateTo | string | — | Show ads first seen on/before this date (YYYY-MM-DD). Library only. |
maxResults | integer | 10 | Max ads per search term + country pair. Hard cap: 3,600 (library). |
resolveAdDetails | boolean | false | Library only. Opens each ad's detail page to unlock: adPaidForBy, advertiserBusinessId, advertiserProfile, advertiserCountry, landingPageUrl, ctaType, campaignObjective, targetAgeGroups, targetGender, targetInterests, targetCountries, usersTargetedEstimate, rejectionReasons. Adds ~7 sec per ad. |
includeAudienceBreakdown | boolean | false | Library only, needs resolveAdDetails. Adds audienceBreakdown — impressions split by country × age × gender. Rich in JSON; keep it off for CSV exports, where one ad can expand into hundreds of columns. |
Note on countries: For
source: "library", only European countries work (see supported list). Forsource: "creative_center", any country code works includingUS,GB,AU,BR,JP.
Example inputs
Quick test — Nike EU ads (library)
{"source": "library","searchTerms": ["Nike"],"countries": ["DE"],"adType": "ALL","maxResults": 25}
Multi-country competitor research — 3 brands × 3 EU markets
{"source": "library","searchTerms": ["Adidas", "Nike", "Puma"],"countries": ["DE", "FR", "NL"],"adType": "ALL","maxResults": 100}
Global top video ads — US market (Creative Center)
{"source": "creative_center","countries": ["US"],"adType": "VIDEO","maxResults": 50}
Combined — EU library + global Creative Center
{"source": "both","searchTerms": ["Samsung"],"countries": ["DE", "US"],"adType": "ALL","maxResults": 50}
Date range — campaign window analysis
{"source": "library","searchTerms": ["Zalando"],"countries": ["DE"],"dateFrom": "2025-01-01","dateTo": "2025-03-31","maxResults": 200}
E-commerce swipe file — top image ads in UK
{"source": "creative_center","countries": ["GB"],"adType": "IMAGE","maxResults": 100}
Supported library countries
The Ads Library source works only for EU/EEA/Switzerland/UK countries.
List a country outside that region together with supported ones — ["DE", "US"] — and the run continues: DE is scraped, US is named in the log as skipped. List only unsupported countries and the run finishes normally, with a status message naming what to change — nothing was attempted and nothing was charged, so there is no failure to report. Nothing is silently swapped to another source: Creative Center ignores searchTerms and returns different fields, so its rows would not be what you searched for, and this Actor charges per row.
EU-27: AT BE BG CY CZ DE DK EE ES FI FR GR HR HU IE IT LT LU LV MT NL PL PT RO SE SI SKEEA: IS LI NOOther: CH (Switzerland) GB (United Kingdom)
For any other country (US, AU, BR, JP…) use source: "creative_center" — remember it is browsed by country, so searchTerms do not apply there.
📦 Output schema
Each item in the dataset represents one ad. The source field tells you whether it came from the Ads Library or Creative Center.
{"adId": "7318291038472910337","source": "library","advertiserName": "Zalando SE","advertiserBusinessId": null,"adPaidForBy": null,"adText": "Shoppe jetzt bei Zalando","landingPageUrl": null,"ctaType": null,"videoUrl": "https://v19-webapp.tiktok.com/video/tos/.../.mp4","thumbnailUrl": "https://p19-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/.../cover.jpg","imageUrls": [],"firstShownDate": "2026-07-24","lastShownDate": "2026-08-14","adStatus": "ACTIVE","daysRunning": 22,"uniqueUsersSeen": "10K-100K","uniqueUsersSeenByCountry": [],"targetCountries": [],"targetAgeGroups": [],"targetGender": null,"targetInterests": [],"targetAudienceType": null,"targetBehaviors": null,"usersTargetedEstimate": null,"rejectedInCountries": [],"rejectionReasons": [],"industry": null,"campaignObjective": null,"budgetRange": null,"ctr": null,"likes": null,"videoMetrics": null,"scrapedAt": "2025-04-04T14:23:11.000Z"}
Library (default —
resolveAdDetails: false): Returns advertiser name, ad copy, video/image creatives, ad dates, run status and the reach bucket. Targeting, landing page and CTA requireresolveAdDetails: true.
Library example with resolveAdDetails: true (full targeting data unlocked):
{"adId": "7318291038472910337","source": "library","advertiserName": "Zalando SE","advertiserBusinessId": "7123456789012345","adPaidForBy": "Zalando SE","adText": "Shoppe jetzt bei Zalando","landingPageUrl": "https://www.zalando.de/sale/?utm_source=tiktok","ctaType": "Shop now","videoUrl": "https://v19-webapp.tiktok.com/video/tos/.../.mp4","thumbnailUrl": "https://p19-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/.../cover.jpg","imageUrls": [],"firstShownDate": "2025-02-10","lastShownDate": "2025-03-28","adStatus": "INACTIVE","daysRunning": 46,"uniqueUsersSeen": "10M-20M","uniqueUsersSeenByCountry": [{ "country": "DE", "impressions": "8.4M" },{ "country": "AT", "impressions": "1.2M" }],"targetCountries": ["DE", "AT", "CH"],"targetAgeGroups": ["18-24", "25-34", "35-44"],"targetGender": "Female","targetInterests": ["Fashion & Accessories", "Shopping"],"targetAudienceType": null,"targetBehaviors": { "videoInteractions": true, "creatorInteractions": false },"usersTargetedEstimate": "8.5M-10.4M","rejectedInCountries": [],"rejectionReasons": [],"advertiserCountry": "Germany","advertiserProfile": {"username": "zalando","displayName": "Zalando","followerCount": "1.2M","accountType": "VERIFIED_BA","profileUrl": "https://www.tiktok.com/share/user/...","avatarUrl": "https://p16-common-sign.tiktokcdn-us.com/.../avatar.jpeg"},"industry": null,"campaignObjective": "Sales","budgetRange": null,"ctr": null,"likes": null,"videoMetrics": null,"scrapedAt": "2025-04-04T14:23:11.000Z"}
Note: add
includeAudienceBreakdown: trueto also receiveaudienceBreakdown— impressions split by country × age × gender.
Creative Center example:
{"adId": "7401234567890123456","source": "creative_center","advertiserName": "GlowLab Skincare","advertiserBusinessId": null,"adPaidForBy": null,"adText": "We tested 100 skincare products. This one actually works.","landingPageUrl": null,"ctaType": null,"videoUrl": "https://v19-webapp.tiktok.com/video/tos/.../video.mp4","thumbnailUrl": "https://p16-sign-va.tiktokcdn.com/tos/.../cover.jpg","imageUrls": [],"firstShownDate": null,"lastShownDate": null,"daysRunning": null,"adStatus": "ACTIVE","uniqueUsersSeen": null,"uniqueUsersSeenByCountry": [],"targetCountries": ["US"],"targetAgeGroups": [],"targetGender": null,"targetInterests": [],"targetAudienceType": null,"targetBehaviors": null,"usersTargetedEstimate": null,"rejectedInCountries": [],"rejectionReasons": [],"industry": "Skincare","industryCode": "label_14103000000","campaignObjective": "TRAFFIC","budgetRange": null,"ctr": 3.24,"likes": 18400,"videoMetrics": {"duration": 28.5,"width": 1080,"height": 1920},"scrapedAt": "2025-04-04T14:23:45.000Z"}
Creative Center: Returns ad title, video creative, performance metrics (CTR, likes), industry, campaign objective, and budget tier. Dates, reach figures, and targeting details are not available from TikTok's Creative Center API.
Field reference
| Field | Source | Type | Notes |
|---|---|---|---|
adId | both | string | Unique TikTok ad ID |
source | both | string | library or creative_center |
advertiserName | both | string | Brand running the ad |
advertiserBusinessId | library* | string|null | Requires resolveAdDetails: true. TikTok business platform ID |
adPaidForBy | library* | string|null | Requires resolveAdDetails: true. DSA transparency: who paid for the ad |
adText | both | string|null | Ad copy / creative title |
videoUrl | both | string|null | Direct CDN video URL (.mp4) |
thumbnailUrl | both | string|null | Cover image URL |
imageUrls | both | string[] | Static image creative URLs. Populated for IMAGE ads |
firstShownDate | library | string|null | First impression date (YYYY-MM-DD). Null for CC |
lastShownDate | library | string|null | Most recent impression date. Null for CC |
daysRunning | library | integer|null | Days the ad ran, first shown → last shown inclusive. Null for CC |
adStatus | both | string | ACTIVE, REJECTED (taken down — see rejectionReasons) or INACTIVE. CC always returns ACTIVE |
uniqueUsersSeen | library | string|null | Reach bucket TikTok labels "Unique users seen", e.g. "1K-10K". Null for CC |
uniqueUsersSeenByCountry | library* | object[] | Per-country breakdown [{country, impressions}]. Requires resolveAdDetails: true. Empty array otherwise |
targetCountries | library* / CC | string[] | Library: requires resolveAdDetails: true. CC: always populated |
targetAgeGroups | library* | string[] | Requires resolveAdDetails: true. Age brackets: 18-24, 25-34, etc. |
targetGender | library* | string|null | Requires resolveAdDetails: true. Male, Female, or All |
targetInterests | library* | string[] | Requires resolveAdDetails: true. Interest categories |
targetAudienceType | library* | string|null | Requires resolveAdDetails: true |
targetBehaviors | library* | object|null | Requires resolveAdDetails: true. {videoInteractions, creatorInteractions} |
usersTargetedEstimate | library* | string|null | Size of the targeted audience, e.g. "6.6M-8.0M". Requires resolveAdDetails: true. Null for CC |
rejectedInCountries | library | string[] | Countries where the ad was rejected. Empty for CC |
rejectionReasons | library | string[] | TikTok's stated reason when an ad was taken down |
landingPageUrl | library* | string|null | Destination URL of the ad. Requires resolveAdDetails: true |
ctaType | library* | string|null | Call-to-action button label, e.g. Shop now. Requires resolveAdDetails: true |
advertiserCountry | library* | string|null | Advertiser's registered country. Requires resolveAdDetails: true |
advertiserProfile | library* | object|null | Public TikTok account behind the ad: {username, displayName, followerCount, accountType, profileUrl, avatarUrl}. Requires resolveAdDetails: true |
audienceBreakdown | library* | object[] | Impressions by country × age × gender. Requires resolveAdDetails: true and includeAudienceBreakdown: true |
industry | creative_center | string|null | Industry name, resolved against TikTok's live category dictionary. Null for library |
industryCode | creative_center | string|null | Raw TikTok category code, e.g. label_22110000000 — handy for grouping |
campaignObjective | both* | string|null | e.g. Sales, Reach, CONVERSION. For library requires resolveAdDetails: true |
budgetRange | — | null | TikTok publishes no spend or budget data for these ads, so this is always null |
ctr | creative_center | float|null | Click-through rate. Null for library |
likes | creative_center | integer|null | Video like count. Null for library |
videoMetrics | creative_center | object|null | {duration, width, height}. Null for library |
scrapedAt | both | string | ISO 8601 scrape timestamp |
Field availability by source
| Field | library | creative_center | Notes |
|---|---|---|---|
advertiserName | ✅ | ✅ | |
adText | ✅ | ✅ | Ad copy / creative title |
videoUrl / thumbnailUrl | ✅ | ✅ | |
imageUrls | ✅ | ✅ | Populated for IMAGE ads |
firstShownDate / lastShownDate | ✅ | ❌ | Library only |
daysRunning | ✅ | ❌ | Computed from dates |
adStatus | ✅ | ✅ (always ACTIVE) | |
uniqueUsersSeen | ✅ | ❌ | Reach bucket, e.g. "10K-100K" |
uniqueUsersSeenByCountry | ✅* | ❌ | Requires resolveAdDetails: true. Per-country impressions |
usersTargetedEstimate | ✅* | ❌ | Requires resolveAdDetails: true. Targeted audience size range |
targetAgeGroups / targetGender | ✅* | ❌ | Library: enable resolveAdDetails: true |
targetInterests / targetBehaviors | ✅* | ❌ | Library: enable resolveAdDetails: true |
targetCountries | ✅* | ✅ | Library: enable resolveAdDetails: true |
advertiserBusinessId / adPaidForBy | ✅* | ❌ | Library: enable resolveAdDetails: true |
rejectedInCountries | ✅ | ❌ | DSA compliance data |
industry / campaignObjective | ❌ | ✅ | CC-only metrics |
budgetRange | ❌ | ❌ | TikTok publishes no spend data — always null |
ctr / likes | ❌ | ✅ | Performance metrics from CC |
videoMetrics | ❌ | ✅ | Duration, dimensions |
Why are some fields null? TikTok's public APIs only expose a subset of ad data. Fields marked ❌ are not returned by TikTok — this is a platform limitation, not a scraper bug. No TikTok scraper can retrieve data that TikTok doesn't expose publicly.
🎯 Use cases
Competitor creative intelligence Pull all active ads from your competitor's brand in their key markets. Analyze which video hooks, CTAs, and creative formats they're investing in — and how large an audience they're reaching.
Building a TikTok ad swipe file
Use Creative Center source to extract top-performing video ads by country, industry, and objective. Filter by budgetRange: HIGH and ctr > 2.0 to collect only proven performers for your creative research.
EU DSA compliance monitoring
Track political, social, or issue-based advertisers in Europe using the Ads Library source. The adPaidForBy, targetAgeGroups, targetGender, and targetInterests fields reveal who is being targeted and by whom — exactly what DSA Article 39 requires to be transparent.
Agency multi-brand reporting Run weekly scrapes for a portfolio of brands across multiple EU markets. Export to CSV, push to Google Sheets, or integrate via Apify API into your reporting dashboard.
E-commerce market intelligence Monitor competitor ads in specific countries before entering a new market. See what formats (video vs image), what hooks, and which brands are getting the highest CTR in your niche.
Ad spend estimation (EU only)
While TikTok doesn't expose exact spend, uniqueUsersSeen + targetCountries gives you a strong signal of which campaigns are getting real budget. A campaign reaching 500K+ users across 5 EU countries is clearly a priority for that advertiser.
Creative trend analysis Track how creative formats are shifting over time. Run the same query monthly and compare: are competitors shifting from video to image? Are they testing new CTA types? Which hooks are disappearing and which are growing?
Influencer & creator strategy
The targetBehaviors.creatorInteractions field reveals which advertisers are targeting users who engage with specific creator profiles — a strong signal about which creator niches are commercially attractive.
💰 Pricing
From $15.00 / 1,000 ads — no monthly fees, pay only for what you scrape.
| Mode | Coverage | ~Cost per 1,000 ads |
|---|---|---|
source: "library" | EU/EEA/UK DSA data | ~$15 |
source: "creative_center" | Global top ads | ~$15 |
source: "both" | Combined — max data | ~$16–17 |
The
bothmode runs two browser sessions (one per source), andresolveAdDetailsopens one extra page per ad (~7 sec each) — both add a little Apify platform compute on top of the base event fee. No monthly fees — pay only for what you scrape.
🆕 What's new
2026-08-25 — runs that explain themselves
- An unsupported country no longer fails the run. List
["DE", "US"]withsource: "library"and Germany is scraped while the US is named as skipped, in the log and again in the final summary. List only unsupported countries and the run finishes normally with a status message telling you exactly what to change — nothing was attempted, nothing was charged, so nothing failed. - A refused connection is retried on a second one. If TikTok does not answer through the primary connection, the task is retried through Apify Residential rather than the run being written off. The proxy check no longer trusts an open port as proof that TikTok accepts it.
- An empty result is no longer mistaken for a block. A run is reported as blocked only when TikTok never answered at all — previously a single stray error, including a 403 on a telemetry request, was enough to call an ordinary empty search a block.
- Pagination no longer stops early on overlapping countries. Scraping several countries for the same term used to cut the later ones short whenever they shared ads with the first.
- Country codes are case-insensitive and de-duplicated.
["de"]works,["US", "US"]is scraped once, and anything that is not an ISO 2-letter code is reported instead of being sent to TikTok. - Every reason at once. If more than one input needs fixing, the error lists all of them rather than revealing them one failed run at a time.
maxResultsnow defaults to 10, as the documentation always said. Runs started through the API without this field previously collected 50. Set it explicitly if you relied on the old value.- Every outcome says which stage it came from —
INPUT:on a run that had nothing to do,BLOCKED:on one TikTok refused — so the two are never confused for each other.
2026-08-23 — deeper data, sharper filters
- Deep pagination. Pull thousands of ads per search — the Actor walks the full result set, so
maxResultsis the only thing that limits you. - Full targeting breakdown. With
resolveAdDetails, every ad comes back with age groups, gender, interests, target countries and per-country reach. - Ad copy for the EU Ads Library. We found a way to pull
adTextfor Library ads, not just Creative Center. - New fields:
landingPageUrl(where the ad sends people),ctaType(button label),rejectionReasons,advertiserProfile(handle, followers and verification of the TikTok account behind the ad),advertiserCountry,industryCode, plus an optionalaudienceBreakdown— impressions by country × age × gender. - Server-side format filtering.
VIDEO,IMAGEand the newTEXTare applied by TikTok itself, so you get exactly the creative type you asked for. - Live industry taxonomy. Categories are resolved against TikTok's own dictionary — 258 up-to-date names.
- Precise
daysRunning. Measures the real flight window, first shown to last shown. - Moderation transparency. Ads TikTok pulled are labelled
REJECTEDwith the stated reason — a fast way to spot brand impersonation and policy-breaking competitors. - Unambiguous runs. Every run reports what it retrieved, what it skipped and why it stopped. An empty result means there were no matching ads in the countries that actually ran — and the final summary lists which those were, so it is never a guess.
⚠️ Limitations
TikTok Ads Library is EU/EEA/UK only
This is a hard platform constraint — TikTok built the Ads Library specifically for EU Digital Services Act compliance. US, APAC, LATAM, and Middle East markets are not available through this source. Use source: "creative_center" for global coverage.
3,600-result hard cap per query (library) TikTok caps the Ads Library at 300 pages × 12 ads = 3,600 results per search. The scraper detects this and logs a clear warning. To get more comprehensive data, run multiple narrower searches (e.g., different date ranges, different keywords).
No spend data
TikTok does not expose actual ad spend figures — not even ranges. This is unlike Meta, which provides {min, max} spend for political ads. All TikTok spend intelligence tools (AdSpyder, PiPiAds, etc.) are using estimates, not real figures.
Some Library ads carry no creative When TikTok takes an ad down, the video and images are removed from the archive. The record still arrives with its copy, landing page, targeting and the stated rejection reason — only the creative itself is gone.
Creative Center shows only top-performing ads The Creative Center does not return all ads — only ads that TikTok's algorithm has identified as top performers in a given period, country, and category. This is by design: it's a creative inspiration tool, not a complete ad archive. TikTok also serves a curated subset to logged-out visitors, so a run may return fewer ads than requested.
TikTok page structure may change TikTok periodically updates their frontend. If results become empty after an update, open an issue and we'll push a fix within 24–48 hours.
🌍 Supported countries — quick reference
Ads Library (EU only)
| Code | Country |
|---|---|
| AT | Austria |
| BE | Belgium |
| BG | Bulgaria |
| CY | Cyprus |
| CZ | Czech Republic |
| DE | Germany |
| DK | Denmark |
| EE | Estonia |
| ES | Spain |
| FI | Finland |
| FR | France |
| GR | Greece |
| HR | Croatia |
| HU | Hungary |
| IE | Ireland |
| IT | Italy |
| LT | Lithuania |
| LU | Luxembourg |
| LV | Latvia |
| MT | Malta |
| NL | Netherlands |
| PL | Poland |
| PT | Portugal |
| RO | Romania |
| SE | Sweden |
| SI | Slovenia |
| SK | Slovakia |
| IS | Iceland |
| LI | Liechtenstein |
| NO | Norway |
| CH | Switzerland |
| GB | United Kingdom |
Creative Center (global — examples)
US GB AU CA DE FR BR MX JP KR IN ID TH PH VN SG MY ZA AE SA — and many more.