<!DOCTYPE html>
<html lang="en">
<head>
<link rel="preconnect" href="cdn.financialreports.eu/financialreports" crossorigin>
<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin>
<link rel="dns-prefetch" href="cdn.financialreports.eu/financialreports">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>European Financial Filings Database | FinancialReports.eu</title>
<meta name="title" content="Complete European Financial Database - 4,391,786 Filings from 13,786 Companies">
<meta name="description" content="Access 4,391,786 financial filings from 13,786 listed companies across 44 European markets. Trusted by leading financial institutions.">
<meta name="robots" content="index, follow, max-snippet:-1, max-image-preview:large">
<meta name="googlebot" content="index, follow">
<link rel="preload" href="https://cdn.financialreports.eu/financialreports/static/css/style34449996.css" as="style">
<link href="https://cdn.financialreports.eu/financialreports/static/css/style34449996.css" rel="stylesheet">
<script src="https://cdn.financialreports.eu/financialreports/static/js/dist/21dependencies.bundle.js" defer type="d945f6b4b81453fb319b7942-text/javascript"></script>
<script src="https://cdn.financialreports.eu/financialreports/static/js/dist/51main.bundle.js" defer type="d945f6b4b81453fb319b7942-text/javascript"></script>
<script src="https://cdn.financialreports.eu/financialreports/static/js/dist/4insider_list.bundle.js" type="d945f6b4b81453fb319b7942-text/javascript"></script>
<script src="https://cdn.jsdelivr.net/npm/algoliasearch@4.14.2/dist/algoliasearch-lite.umd.js" defer type="d945f6b4b81453fb319b7942-text/javascript"></script>
<meta property="og:type" content="website">
<meta property="og:url" content="https://financial-reports.eu/">
<meta property="og:title" content="European Financial Database - 13,786 Companies | FinancialReports.eu">
<meta property="og:description" content="Complete database of European financial filings. Instant access to 4,391,786 documents from 13,786 companies across 44 countries.">
<meta property="og:image" content="https://cdn.financialreports.eu/financialreports/static/assets/img/og_financialreports_final.jpg">
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:url" content="https://financial-reports.eu/">
<meta property="twitter:title" content="European Financial Filings Database">
<meta property="twitter:description" content="">
<meta property="twitter:image" content="https://cdn.financialreports.eu/financialreports/static/assets/img/og_financialreports_final.jpg">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.financialreports.eu/financialreports/static/assets/favicon/new/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://cdn.financialreports.eu/financialreports/static/assets/favicon/new/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="https://cdn.financialreports.eu/financialreports/static/assets/favicon/new/favicon-16x16.png">
<link rel="manifest" href="https://cdn.financialreports.eu/financialreports/static/assets/favicon/new/site.webmanifest">
<link rel="mask-icon" href="https://cdn.financialreports.eu/financialreports/static/assets/favicon/new/safari-pinned-tab.svg" color="#0066ff">
<link rel="shortcut icon" href="https://cdn.financialreports.eu/financialreports/static/assets/favicon/new/favicon.ico" type="image/x-icon">
<meta name="msapplication-TileColor" content="#0066ff">
<meta name="theme-color" content="#0066ff">
<meta name="google-site-verification" content="KWS-hKTNvNbinBqfm3tSb5mUczO7j73BjTsNtNlcP3Q" />
<link rel="canonical" href="https://financialreports.eu/" />
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "FinancialReports.eu",
"url": "https://financialreports.eu/",
"description": "Comprehensive European financial filings database covering 8,000+ companies",
"potentialAction": {
"@type": "SearchAction",
"target": "https://financialreports.eu/companies/search/?name={search_term_string}",
"query-input": "required name=search_term_string"
}
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "FinancialReports UG",
"url": "https://financialreports.eu",
"logo": {
"@type": "ImageObject",
"url": "https://cdn.financialreports.eu/financialreports/static/assets/favicon/new/apple-touch-icon.png",
"width": "180",
"height": "180"
},
"description": "Provider of comprehensive European financial data and filings",
"foundingDate": "2022",
"knowsAbout": [
"Financial Data",
"European Stock Markets",
"Company Filings",
"Financial Intelligence",
"Corporate Disclosures"
],
"review": {
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"author": {
"@type": "Organization",
"name": "Major Financial Institutions"
},
"reviewBody": "Excellent source of European financial data and company filings"
},
"funder": [
{
"@type": "Organization",
"name": "JPMorgan Chase"
},
{
"@type": "Organization",
"name": "Goldman Sachs"
},
{
"@type": "Organization",
"name": "BlackRock"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Dataset",
"name": "European Financial Filings Database",
"description": "Comprehensive database of over 100,000 financial filings from 8,000+ European companies",
"keywords": [
"Financial Filings",
"European Companies",
"Company Reports",
"Financial Data",
"Corporate Disclosures",
"Stock Market Information"
],
"creator": {
"@type": "Organization",
"name": "FinancialReports UG"
},
"distribution": [
{
"@type": "DataDownload",
"encodingFormat": "JSON",
"contentUrl": "https://financialreports.eu/api/"
}
],
"spatialCoverage": {
"@type": "Place",
"name": "Europe"
},
"temporalCoverage": "2022/2024",
"includedInDataCatalog": {
"@type": "DataCatalog",
"name": "European Financial Documents"
},
"license": "Commercial",
"dateModified": "2024"
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"url": "https://financialreports.eu/",
"potentialAction": {
"@type": "SearchAction",
"target": "https://financialreports.eu/companies/search/?name={search_term_string}",
"query-input": "required name=search_term_string"
}
}
</script>
<script type="d945f6b4b81453fb319b7942-text/javascript">
(function(f,b){if(!b.__SV){var e,g,i,h;window.mixpanel=b;b._i=[];b.init=function(e,f,c){function g(a,d){var b=d.split(".");2==b.length&&(a=a[b[0]],d=b[1]);a[d]=function(){a.push([d].concat(Array.prototype.slice.call(arguments,0)))}}var a=b;"undefined"!==typeof c?a=b[c]=[]:c="mixpanel";a.people=a.people||[];a.toString=function(a){var d="mixpanel";"mixpanel"!==c&&(d+="."+c);a||(d+=" (stub)");return d};a.people.toString=function(){return a.toString(1)+".people (stub)"};i="disable track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config people.set people.set_once people.increment people.append people.track_charge people.clear_charges people.delete_user people.remove".split(" ");
for(h=0;h<i.length;h++)g(a,i[h]);var j="set set_once add remove_list append prepend union subtract".split(" ");a.get_group=function(){function b(c){d[c]=function(){call2_args=arguments;call2=[c].concat(Array.prototype.slice.call(call2_args,0));a.push([e,call2])}}function d(){}d.toString=function(){return a.toString(1)+".group (stub)"};var e="group";var f="group_key";var k="group_id";b(j[0]);b(j[1]);b(j[2]);b(j[3]);b(j[4]);b(j[5]);b(j[6]);b(j[7]);return d};b._i.push([e,f,c])};b.__SV=1.2;e=f.createElement("script");e.type="text/javascript";e.async=true;e.src="undefined"!==typeof MIXPANEL_CUSTOM_LIB_URL?MIXPANEL_CUSTOM_LIB_URL:"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js";g=f.getElementsByTagName("script")[0];g.parentNode.insertBefore(e,g)}})(document,window.mixpanel||[]);
mixpanel.init("872f896684d5161d1c3c02d2d7c3a181", {
debug: false,
track_pageview: true,
persistence: 'localStorage'
});
</script>
<script type="d945f6b4b81453fb319b7942-text/javascript">
(function(c,l,a,r,i,t,y){
c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
})(window, document, "clarity", "script", "rd6mxsv5na");
</script>
</head>
<body x-data="app()"
@open-auth-modal.window="openAuthModal($event.detail.tab)"
@open-upgrade-modal.window="openUpgradeModal($event.detail)"
class="js-loading pt-[101px]">
<div id="header-container"
class="fixed w-full top-0 left-0 z-50 transition-transform duration-300 ease-in-out print:hidden"
x-data="{
scrollTop: window.scrollY,
mobileMenuOpen: false,
solutionsOpen: false,
promoBarHeight: 0,
get actualPromoBarHeight() {
const promoEl = document.getElementById('promo-bar');
return promoEl ? promoEl.offsetHeight : 0;
},
get headerTopOffset() {
return (this.scrollTop > 0 && this.actualPromoBarHeight > 0) ? -this.actualPromoBarHeight : 0;
}
}"
x-init="
promoBarHeight = actualPromoBarHeight;
window.addEventListener('scroll', () => { scrollTop = window.scrollY; });
window.addEventListener('resize', () => { promoBarHeight = actualPromoBarHeight; });
"
:style="{ transform: 'translateY(' + headerTopOffset + 'px)' }">
<div class="bg-finrep text-white text-center text-sm font-medium transition-all duration-300" id="promo-bar">
<div class="mx-auto max-w-screen-2xl px-4 sm:px-6 lg:px-8 py-2">
<a href="/pricing/"
class="inline-flex items-center hover:text-white/80 transition-colors duration-150"
data-track-event="navbar-click"
data-link-name="Promo Bar - Enterprise">
<span class="hidden sm:inline">Power Your Strategy with Our Enterprise API.</span>
<span class="ml-2 font-bold hidden sm:inline">Request Access</span>
<span class="sm:hidden">Real-Time European Filings API. <span class="ml-1 font-bold">Request Access</span></span>
<svg class="ml-1.5 h-4 w-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" /></svg>
</a>
</div>
</div>
<nav id="navbar" class="bg-white border-b border-gray-200 transition-shadow duration-300 w-full relative h-16"
:class="{ 'shadow-md': scrollTop > ( (headerTopOffset === 0) ? actualPromoBarHeight : 0) }">
<div class="mx-auto max-w-screen-2xl px-4 sm:px-6 lg:px-8 relative">
<div class="flex h-16 items-center justify-between">
<div class="flex items-center">
<div class="flex-shrink-0">
<a href="/"
aria-label="FinancialReports Homepage"
data-track-event="navbar-click"
data-link-name="Logo">
<img src="https://cdn.financialreports.eu/financialreports/static/assets/logo.svg" class="h-6 w-auto" alt="FinancialReports Logo">
</a>
</div>
</div>
<div class="flex items-center">
<a href="/companies/search/" class="hidden lg:block p-2 mr-1 text-gray-600 hover:text-finrep transition-colors" aria-label="Search companies" data-track-event="navbar-click" data-link-name="Search Icon">
<svg class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z" clip-rule="evenodd" /></svg>
</a>
<div class="hidden lg:flex lg:items-center">
<button type="button" @click="openAuthModal('login')" class="text-sm font-medium text-gray-600 hover:text-finrep transition-colors duration-150">Log in</button>
<button type="button" @click="openAuthModal('register')" class="ml-4 text-sm font-medium text-gray-600 hover:text-finrep transition-colors duration-150">Sign up</button>
<a href="/pricing/" class="ml-4 inline-flex items-center justify-center rounded-md bg-finrep px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-finrep-dark focus:outline-none focus:ring-2 focus:ring-finrep focus:ring-offset-2 transition-colors duration-150">Request a Demo</a>
</div>
<div class="flex items-center lg:hidden ml-2">
<button type="button" id="mobile-menu-button" @click="mobileMenuOpen = !mobileMenuOpen" class="relative inline-flex items-center justify-center rounded-md p-2 text-gray-500 hover:bg-gray-100 hover:text-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-finrep" aria-controls="mobile-menu" :aria-expanded="mobileMenuOpen.toString()">
<span class="sr-only">Open main menu</span>
<svg x-show="!mobileMenuOpen" class="block h-6 w-6" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5" /></svg>
<svg x-show="mobileMenuOpen" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" x-cloak><path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" /></svg>
</button>
</div>
</div>
</div>
<div class="hidden lg:flex items-center absolute inset-y-0 left-1/2 transform -translate-x-1/2 space-x-1">
<a href="/companies/search/" class="px-3 py-2 text-sm font-medium text-gray-600 hover:text-finrep transition-colors duration-150">Companies</a>
<a href="/filings/" class="px-3 py-2 text-sm font-medium text-gray-600 hover:text-finrep transition-colors duration-150">Filings</a>
<div class="relative" @click.outside="solutionsOpen = false">
<button @click="solutionsOpen = !solutionsOpen" class="flex items-center px-3 py-2 text-sm font-medium text-gray-600 hover:text-finrep transition-colors duration-150" :class="{ 'text-finrep': solutionsOpen }">
<span>Solutions</span>
<svg class="ml-1 h-4 w-4 text-gray-400 transition-transform" :class="{ 'rotate-180': solutionsOpen }" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z" clip-rule="evenodd" /></svg>
</button>
<div x-show="solutionsOpen" x-transition x-cloak class="absolute z-10 mt-2 w-56 origin-top-left rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none">
<div class="py-1">
<a href="/for/hedge-funds/" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">For Hedge Funds</a>
<a href="/for/asset-managers/" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">For Asset Managers</a>
<a href="/for/analytics-platforms/" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">For Analytics Platforms</a>
<a href="/for/academic-research/" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">For Academic Research</a>
</div>
</div>
</div>
<a href="/api-solutions/" class="px-3 py-2 text-sm font-medium text-gray-600 hover:text-finrep transition-colors duration-150">API</a>
<a href="/accounts/pricing/" class="px-3 py-2 text-sm font-medium text-gray-600 hover:text-finrep transition-colors duration-150">Pricing</a>
</div>
</div>
<div x-show="mobileMenuOpen" x-transition x-cloak class="lg:hidden border-t border-gray-200 bg-white absolute w-full shadow-lg max-h-[calc(100vh-104px)] overflow-y-auto z-20" id="mobile-menu">
<div class="space-y-1 px-4 pt-4 pb-3">
<div class="pb-4">
<label for="mobile-search" class="sr-only">Search Companies</label>
<div class="relative"><div class="pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3"><svg class="h-5 w-5 text-gray-400" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z" clip-rule="evenodd" /></svg></div><input id="mobile-search" name="mobile-search" class="block w-full rounded-md border-0 bg-gray-100/70 py-2 pl-10 pr-3 text-gray-900 ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:bg-white focus:text-gray-900 focus:ring-2 focus:ring-inset focus:ring-finrep sm:text-sm sm:leading-6 transition-all" placeholder="Search companies..." type="search"></div>
<div id="mobile-search-results" class="hidden relative w-full mt-1 rounded-md bg-white shadow-lg border border-gray-200 max-h-72 overflow-y-auto z-[60]"></div>
</div>
<div class="space-y-1">
<a href="/companies/search/" class="block rounded-md px-3 py-2 text-base font-medium text-gray-700 hover:bg-gray-50 hover:text-gray-900">Companies</a>
<a href="/filings/" class="block rounded-md px-3 py-2 text-base font-medium text-gray-700 hover:bg-gray-50 hover:text-gray-900">Filings</a>
<div>
<button @click="solutionsOpen = !solutionsOpen" class="w-full flex justify-between items-center rounded-md px-3 py-2 text-base font-medium text-gray-700 hover:bg-gray-50 hover:text-gray-900">
<span>Solutions</span>
<svg class="h-5 w-5 text-gray-500 transition-transform" :class="{ 'rotate-180': solutionsOpen }" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z" clip-rule="evenodd" /></svg>
</button>
<div x-show="solutionsOpen" x-cloak class="mt-1 ml-4 space-y-1 border-l border-gray-200 pl-3">
<a href="/for/hedge-funds/" class="block rounded-md px-3 py-2 text-base font-medium text-gray-600 hover:bg-gray-50 hover:text-gray-900">For Hedge Funds</a>
<a href="/for/asset-managers/" class="block rounded-md px-3 py-2 text-base font-medium text-gray-600 hover:bg-gray-50 hover:text-gray-900">For Asset Managers</a>
<a href="/for/analytics-platforms/" class="block rounded-md px-3 py-2 text-base font-medium text-gray-600 hover:bg-gray-50 hover:text-gray-900">For Analytics Platforms</a>
<a href="/for/academic-research/" class="block rounded-md px-3 py-2 text-base font-medium text-gray-600 hover:bg-gray-50 hover:text-gray-900">For Academic Research</a>
</div>
</div>
<a href="/api-solutions/" class="block rounded-md px-3 py-2 text-base font-medium text-gray-700 hover:bg-gray-50 hover:text-gray-900">API</a>
<a href="/accounts/pricing/" class="block rounded-md px-3 py-2 text-base font-medium text-gray-700 hover:bg-gray-50 hover:text-gray-900">Pricing</a>
</div>
</div>
<div class="border-t border-gray-200 pt-4 pb-3">
<div class="space-y-2 px-4"><a href="/pricing/" class="block w-full text-center rounded-md bg-finrep px-3 py-2 text-base font-medium text-white hover:bg-finrep-dark shadow-sm">Request a Demo</a><button type="button" @click="openAuthModal('login'); mobileMenuOpen = false" class="block w-full text-center rounded-md px-3 py-2 text-base font-medium text-gray-600 ring-1 ring-inset ring-gray-300 hover:bg-gray-50">Log in</button><button type="button" @click="openAuthModal('register'); mobileMenuOpen = false" class="block w-full text-center rounded-md px-3 py-2 text-base font-medium text-gray-600 hover:bg-gray-50">or Sign up</button></div>
</div>
</div>
</nav>
</div>
<div class="bg-white">
<div class="relative isolate z-10">
<div class="absolute inset-x-0 -top-40 -z-10 transform-gpu overflow-hidden blur-3xl sm:-top-80" aria-hidden="true">
<div class="relative left-[calc(50%-11rem)] aspect-[1155/678] w-[36.125rem] -translate-x-1/2 rotate-[30deg] bg-gradient-to-tr from-[#90b9ff] to-[#0066ff] opacity-20 sm:left-[calc(50%-30rem)] sm:w-[72.1875rem]" style="clip-path: polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)"></div>
</div>
<div class="mx-auto max-w-4xl px-6 pt-16 pb-20 sm:pt-24 sm:pb-24 lg:pt-32 lg:pb-32">
<div class="text-center">
<h1 class="text-4xl font-bold tracking-tight text-gray-900 sm:text-6xl">Your Real-Time Engine for <span class="text-finrep">European Markets.</span></h1>
<p class="mt-6 text-lg leading-8 text-gray-600">
Stop wrestling with messy data. Start building your advantage with a real-time, AI-ready API for every European filing.
<br class="hidden md:block">
Explore <span class="font-semibold text-finrep">4.4 million</span> filings from <span class="font-semibold text-finrep">13,786</span> listed companies.
</p>
<div class="mt-10 max-w-2xl mx-auto relative">
<div class="flex shadow-lg rounded-md overflow-hidden border border-gray-200/50">
<input type="text"
name="company-search"
id="homepage-search"
class="flex-grow px-5 py-4 text-base border-0 focus:ring-2 focus:ring-inset focus:ring-blue-600"
placeholder="Search any European listed company (e.g., 'adidas')"
>
<button id="homepage-search-button"
class="px-6 bg-blue-600 text-white font-semibold hover:bg-blue-500 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-blue-600 transition-colors duration-150">
<svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path fill-rule="evenodd" d="M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z" clip-rule="evenodd" />
</svg>
<span class="sr-only">Search</span>
</button>
</div>
<div id="homepage-search-results"
class="hidden absolute left-0 right-0 top-full mt-2 bg-white rounded-lg shadow-2xl border border-gray-200 max-h-96 overflow-y-auto z-[1000] text-left">
</div>
</div>
<div class="mt-10 flex items-center justify-center gap-x-6">
<a href="/api-solutions/" class="rounded-md bg-finrep px-4 py-3 text-sm font-semibold text-white shadow-sm hover:bg-blue-700 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-finrep">
Request API Access
</a>
<a href="https://docs.financialreports.eu/" target="_blank" rel="noopener noreferrer" class="text-sm font-semibold leading-6 text-gray-900">
Explore API Docs <span aria-hidden="true">→</span>
</a>
</div>
</div>
</div>
<div class="absolute inset-x-0 top-[calc(100%-13rem)] -z-10 transform-gpu overflow-hidden blur-3xl sm:top-[calc(100%-30rem)]" aria-hidden="true">
<div class="relative left-[calc(50%+3rem)] aspect-[1155/678] w-[36.125rem] -translate-x-1/2 bg-gradient-to-tr from-[#90b9ff] to-[#0066ff] opacity-20 sm:left-[calc(50%+36rem)] sm:w-[72.1875rem]" style="clip-path: polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)"></div>
</div>
</div>
</div>
<script type="d945f6b4b81453fb319b7942-text/javascript">
function handleHomepageSearch() {
const searchInput = document.getElementById('homepage-search');
const resultsDiv = document.getElementById('homepage-search-results');
const searchButton = document.getElementById('homepage-search-button');
let timer;
if (!searchInput) return;
const performSearch = () => {
clearTimeout(timer);
const query = searchInput.value;
if (query.length < 2) {
resultsDiv.classList.add('hidden');
return;
}
timer = setTimeout(() => {
fetch(`/companies/company-autocomplete/?q=${encodeURIComponent(query)}`)
.then(response => response.json())
.then(data => {
if (!data.list || data.list.length === 0) {
resultsDiv.classList.add('hidden');
return;
}
resultsDiv.innerHTML = data.list.map(item => `
<a href="/companies/${item.slug}/"
class="flex items-center p-3 hover:bg-gray-100 border-b border-gray-100 last:border-0 transition-colors duration-150">
<div class="flex-shrink-0 h-10 w-10 bg-white border border-gray-200 rounded-md flex items-center justify-center mr-3">
<img src="${item.logo}"
alt="${item.name} logo"
class="h-6 w-6 object-contain"
onerror="this.parentElement.style.display='none'"
/>
</div>
<div class="flex-1 min-w-0">
<div class="font-semibold text-gray-800 text-base truncate">
${item.name}
</div>
<div class="text-sm text-gray-500 truncate">
${[
item.ticker ? `<strong>${item.ticker}</strong>` : '',
item.country_name || '',
item.sector_name || ''
].filter(Boolean).join(' · ')}
</div>
</div>
</a>
`).join('');
resultsDiv.classList.remove('hidden');
})
.catch(err => {
console.error('Search error:', err);
resultsDiv.classList.add('hidden');
});
}, 250);
};
searchInput.addEventListener('input', performSearch);
document.addEventListener('click', (event) => {
if (!event.target.closest('#homepage-search-button') && !event.target.closest('#homepage-search') && !event.target.closest('#homepage-search-results')) {
resultsDiv.classList.add('hidden');
}
});
function redirectToSearchPage() {
const query = searchInput.value;
if (query) {
window.location.href = `/companies/search/?query=${encodeURIComponent(query)}`;
}
}
searchButton.addEventListener('click', redirectToSearchPage);
searchInput.addEventListener('keypress', (e) => {
if (e.key === 'Enter') {
e.preventDefault();
redirectToSearchPage();
}
});
}
document.addEventListener('DOMContentLoaded', handleHomepageSearch);
</script>
<div class="bg-white pb-24 sm:pb-32">
<div class="mx-auto max-w-7xl px-6 lg:px-8">
<div class="mx-auto max-w-4xl text-center">
<h2 class="text-base font-semibold leading-7 text-gray-600">Powering Research at The World's Leading Institutions</h2>
</div>
<div class="mx-auto mt-10 grid max-w-lg grid-cols-2 items-center gap-x-8 gap-y-12 sm:max-w-xl sm:grid-cols-3 lg:mx-0 lg:max-w-none lg:grid-cols-5">
<img class="col-span-1 max-h-12 w-full object-contain filter grayscale hover:grayscale-0 transition duration-300" src="https://cdn.financialreports.eu/financialreports/static/assets/img/logos/uni1.png" alt="ESCP Business School" width="158" height="48">
<img class="col-span-1 max-h-12 w-full object-contain filter grayscale hover:grayscale-0 transition duration-300" src="https://cdn.financialreports.eu/financialreports/static/assets/img/logos/uni2.svg" alt="University of Gothenburg" width="158" height="48">
<img class="col-span-1 max-h-12 w-full object-contain filter grayscale hover:grayscale-0 transition duration-300" src="https://cdn.financialreports.eu/financialreports/static/assets/img/logos/uni3.png" alt="Stockholm School of Economics" width="158" height="48">
<img class="col-span-1 max-h-12 w-full object-contain filter grayscale hover:grayscale-0 transition duration-300" src="https://cdn.financialreports.eu/financialreports/static/assets/img/logos/uni4.svg" alt="University of Oxford" width="158" height="48">
<img class="col-span-1 max-h-12 w-full object-contain filter grayscale hover:grayscale-0 transition duration-300" src="https://cdn.financialreports.eu/financialreports/static/assets/img/logos/uni5.jpg" alt="Universität Paderborn" width="158" height="48">
</div>
<div class="mx-auto mt-16 max-w-5xl flow-root">
<div class="relative">
<figure class="rounded-2xl bg-gray-50 p-8 shadow-lg ring-1 ring-gray-900/5 sm:p-12">
<blockquote class="text-center text-xl font-semibold leading-8 text-gray-900 sm:text-2xl sm:leading-9">
<p>“FinancialReports provides the clean, structured data layer we needed to build our internal LLM-powered search engine. Our analysts now have an informational advantage that was previously impossible to achieve at scale.”</p>
</blockquote>
<figcaption class="mt-10 text-center">
<div class="text-base">
<div class="font-semibold text-gray-900">Head of Data Science</div>
<div class="mt-1 text-gray-600">Global Asset Management Firm</div>
</div>
</figcaption>
</figure>
</div>
</div>
</div>
</div>
<div class="bg-gray-50 py-24 sm:py-32">
<div class="mx-auto max-w-7xl px-6 lg:px-8">
<div class="mx-auto max-w-2xl lg:text-center">
<h2 class="text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl">A Single Platform, Built for Your Workflow</h2>
<p class="mt-4 text-lg leading-8 text-gray-600">Whether you're building models, analyzing markets, or enabling research, our data layer is designed to accelerate your work.</p>
</div>
<div class="mx-auto mt-16 max-w-2xl sm:mt-20 lg:mt-24 lg:max-w-none">
<div class="grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-2">
<a href="/for/hedge-funds/" class="block rounded-2xl bg-white p-8 shadow-lg ring-1 ring-gray-900/5 transition-shadow duration-300 hover:shadow-xl">
<div class="flex h-10 w-10 items-center justify-center rounded-lg bg-blue-100">
<svg class="h-6 w-6 text-blue-600" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="m3.75 13.5 10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75Z" />
</svg>
</div>
<h3 class="mt-5 text-lg font-semibold leading-6 text-gray-900">For Hedge Funds</h3>
<p class="mt-2 text-base text-gray-600">Gain a millisecond edge with low-latency APIs and complete coverage of small-cap markets to find alpha where others aren't looking.</p>
<p class="mt-5 text-sm font-semibold text-blue-600">Explore for Quants & Traders <span aria-hidden="true">→</span></p>
</a>
<a href="/for/asset-managers/" class="block rounded-2xl bg-white p-8 shadow-lg ring-1 ring-gray-900/5 transition-shadow duration-300 hover:shadow-xl">
<div class="flex h-10 w-10 items-center justify-center rounded-lg bg-blue-100">
<svg class="h-6 w-6 text-blue-600" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 5.25a3 3 0 0 1 3 3m3 0a6 6 0 0 1-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1 1 21.75 8.25Z" />
</svg>
</div>
<h3 class="mt-5 text-lg font-semibold leading-6 text-gray-900">For Asset Managers</h3>
<p class="mt-2 text-base text-gray-600">Build your proprietary edge with AI-ready data, enabling your teams to create internal research tools with a full, unbiased market view.</p>
<p class="mt-5 text-sm font-semibold text-blue-600">Explore for Investment Teams <span aria-hidden="true">→</span></p>
</a>
<a href="/for/academic-research/" class="block rounded-2xl bg-white p-8 shadow-lg ring-1 ring-gray-900/5 transition-shadow duration-300 hover:shadow-xl">
<div class="flex h-10 w-10 items-center justify-center rounded-lg bg-blue-100">
<svg class="h-6 w-6 text-blue-600" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path d="M4.26 10.147a60.438 60.438 0 0 0-.491 6.347A48.62 48.62 0 0 1 12 20.904a48.62 48.62 0 0 1 8.232-4.41 60.46 60.46 0 0 0-.491-6.347m-15.482 0a50.636 50.636 0 0 0-2.658-.813A59.906 59.906 0 0 1 12 3.493a59.903 59.903 0 0 1 10.399 5.84c-.896.248-1.783.52-2.658.814m-15.482 0A50.717 50.717 0 0 1 12 13.489a50.702 50.702 0 0 1 7.74-3.342M6.75 15a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm0 0v-3.675A55.378 55.378 0 0 1 12 8.443m-7.007 11.55A5.981 5.981 0 0 0 6.75 15.75v-1.5" />
</svg>
</div>
<h3 class="mt-5 text-lg font-semibold leading-6 text-gray-900">For Academic Research</h3>
<p class="mt-2 text-base text-gray-600">Access a complete, unbiased universe of historical data. Eliminate selection bias and power your research with the companies others ignore.</p>
<p class="mt-5 text-sm font-semibold text-blue-600">Explore for Researchers <span aria-hidden="true">→</span></p>
</a>
<a href="/for/analytics-platforms/" class="block rounded-2xl bg-white p-8 shadow-lg ring-1 ring-gray-900/5 transition-shadow duration-300 hover:shadow-xl">
<div class="flex h-10 w-10 items-center justify-center rounded-lg bg-blue-100">
<svg class="h-6 w-6 text-blue-600" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="m21 7.5-9-5.25L3 7.5m18 0-9 5.25m9-5.25v9l-9 5.25M3 7.5l9 5.25M3 7.5v9l9 5.25m0-9v9" />
</svg>
</div>
<h3 class="mt-5 text-lg font-semibold leading-6 text-gray-900">For Analytics Platforms</h3>
<p class="mt-2 text-base text-gray-600">Focus on building your product, not data sourcing. Integrate our entire European data feed through a single, reliable API.</p>
<p class="mt-5 text-sm font-semibold text-blue-600">Explore for Builders & Platforms <span aria-hidden="true">→</span></p>
</a>
</div>
</div>
</div>
</div>
<div class="bg-white py-24 sm:py-32">
<div class="mx-auto max-w-7xl px-6 lg:px-8">
<div class="mx-auto grid max-w-2xl grid-cols-1 items-start gap-x-16 gap-y-16 sm:gap-y-24 lg:mx-0 lg:max-w-none lg:grid-cols-2">
<div class="lg:pr-4">
<div class="relative w-full overflow-hidden rounded-2xl bg-gray-100 shadow-lg ring-1 ring-gray-900/10">
<div id="homepage-map-viz" class="aspect-[6/5] w-full"></div>
</div>
</div>
<div>
<div class="text-base leading-7 text-gray-700">
<p class="text-base font-semibold leading-7 text-blue-600">Unrivaled Coverage</p>
<h2 class="mt-2 text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl">One API. The Entire European Market.</h2>
<div class="max-w-xl">
<p class="mt-6">
Stop patching together dozens of disparate data sources. We provide a single, logical REST API that unifies regulatory data from over 30 countries into one seamless, comprehensive, and low-latency integration.
</p>
</div>
</div>
<dl class="mt-10 grid grid-cols-2 gap-8 border-t border-gray-200 pt-10 sm:grid-cols-2">
<div>
<dt class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl">13,786+</dt>
<dd class="mt-2 text-base leading-7 text-gray-600">Listed Companies</dd>
</div>
<div>
<dt class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl">4.4 million+</dt>
<dd class="mt-2 text-base leading-7 text-gray-600">Filings Indexed</dd>
</div>
<div>
<dt class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl">44+</dt>
<dd class="mt-2 text-base leading-7 text-gray-600">Countries Covered</dd>
</div>
<div>
<dt class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl">27+</dt>
<dd class="mt-2 text-base leading-7 text-gray-600">Years of History</dd>
</div>
</dl>
</div>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/7.8.5/d3.min.js" type="d945f6b4b81453fb319b7942-text/javascript"></script>
<script type="d945f6b4b81453fb319b7942-text/javascript">
document.addEventListener('DOMContentLoaded', function() {
const vizContainerId = 'homepage-map-viz';
if (document.getElementById(vizContainerId)) {
if (typeof d3 !== 'undefined') {
initHomepageEuropeMap(vizContainerId);
} else {
const script = document.createElement('script');
script.src = 'https://cdnjs.cloudflare.com/ajax/libs/d3/7.8.5/d3.min.js';
script.onload = () => initHomepageEuropeMap(vizContainerId);
document.head.appendChild(script);
}
}
});
function initHomepageEuropeMap(containerId) {
const container = document.getElementById(containerId);
if (!container) return;
const width = container.clientWidth;
const height = container.clientHeight;
const svg = d3.select(container)
.append('svg')
.attr('width', '100%')
.attr('height', '100%')
.attr('viewBox', `0 0 800 600`)
.attr('preserveAspectRatio', 'xMidYMid meet');
const parentContainer = container.parentElement;
const tooltip = d3.select(parentContainer).append('div')
.style('position', 'absolute')
.style('background-color', 'rgba(17, 24, 39, 0.8)')
.style('color', 'white')
.style('padding', '6px 12px')
.style('border-radius', '4px')
.style('font-size', '14px')
.style('pointer-events', 'none')
.style('opacity', 0)
.style('transition', 'opacity 0.2s ease-in-out')
.style('z-index', 10);
const projection = d3.geoMercator()
.center([15, 54])
.scale(800)
.translate([800 / 2, 600 / 2]);
const path = d3.geoPath().projection(projection);
const geoJsonUrl = "/api/geojson-proxy/";
const primaryColor = "#3b82f6";
const baseColor = "#93c5fd";
const strokeColor = "#f9fafb";
fetch(geoJsonUrl)
.then(response => {
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
return response.json();
})
.then(geojson => {
const g = svg.append("g");
g.selectAll("path")
.data(geojson.features)
.enter()
.append("path")
.attr("d", path)
.attr("fill", baseColor)
.attr("stroke", strokeColor)
.attr("stroke-width", 0.5)
.on("mouseover", function(event, d) {
d3.select(this)
.transition()
.duration(150)
.attr("fill", primaryColor);
tooltip.transition()
.duration(150)
.style('opacity', 1);
tooltip.text(d.properties.name || d.properties.NAME);
})
.on("mousemove", function(event) {
const [x, y] = d3.pointer(event, parentContainer);
tooltip.style('left', `${x + 15}px`)
.style('top', `${y}px`);
})
.on("mouseout", function() {
d3.select(this)
.transition()
.duration(150)
.attr("fill", baseColor);
tooltip.transition()
.duration(150)
.style('opacity', 0);
});
const zoom = d3.zoom()
.scaleExtent([0.8, 8])
.translateExtent([[-100, -100], [900, 700]])
.on('zoom', (event) => {
g.attr('transform', event.transform);
});
svg.call(zoom);
svg.call(zoom.transform, d3.zoomIdentity.translate(0, -50).scale(1.1));
})
.catch(error => {
console.error("Error loading the GeoJSON file:", error);
container.innerHTML = "<div class='flex items-center justify-center h-full bg-gray-200 text-gray-500 rounded-lg p-4'>Map data could not be loaded.</div>";
});
}
</script>
<div class="bg-gray-50 py-24 sm:py-32">
<div class="mx-auto max-w-7xl px-6 lg:px-8">
<div class="mx-auto max-w-3xl text-center">
<h2 class="text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl">From Messy PDFs to AI-Ready Markdown</h2>
<p class="mt-6 text-lg leading-8 text-gray-600">Our parsers solve the single biggest bottleneck in financial data science. We turn raw filings into clean, structured text so your team can stop cleaning and start building the models that drive your business forward.</p>
</div>
<div class="mt-16 sm:mt-20 flow-root">
<div class="-m-2 rounded-xl bg-gray-900/5 p-2 ring-1 ring-inset ring-gray-900/10 lg:-m-4 lg:rounded-2xl lg:p-4">
<div class="grid grid-cols-1 items-start gap-y-12 md:grid-cols-5 md:gap-x-8 px-4 py-8 sm:px-6 sm:py-10 lg:px-8 lg:py-12">
<div class="md:col-span-2">
<p class="text-center text-sm font-semibold text-gray-500 md:text-left">THE PROBLEM: Unstructured PDF</p>
<img src="https://cdn.financialreports.eu/financialreports/static/assets/img/other/adidas_pdf.jpg" alt="An unstructured PDF document showing a consolidated income statement." class="mt-3 w-full rounded-md shadow-lg ring-1 ring-gray-900/10">
</div>
<div class="md:col-span-3">
<p class="text-center text-sm font-semibold text-gray-500 md:text-left">THE SOLUTION: Clean Markdown</p>
<img src="https://cdn.financialreports.eu/financialreports/static/assets/img/other/adidas_markdown.jpg" alt="The same financial data presented as clean, structured Markdown text." class="mt-3 w-full rounded-md shadow-lg ring-1 ring-gray-900/10">
</div>
</div>
</div>
</div>
<div class="mx-auto mt-16 max-w-5xl sm:mt-20">
<dl class="grid grid-cols-1 gap-x-8 gap-y-10 text-base leading-7 text-gray-600 md:grid-cols-2 lg:grid-cols-3 lg:gap-x-12">
<div class="relative pl-9">
<dt class="inline font-semibold text-gray-900">
<svg class="absolute left-1 top-1 h-5 w-5 text-blue-600" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="m3.75 13.5 10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75Z" />
</svg>
Token-Efficient for LLMs.
</dt>
<dd class="mt-2 block">Clean Markdown uses far fewer tokens than raw text from PDFs, reducing API costs and speeding up analysis.</dd>
</div>
<div class="relative pl-9">
<dt class="inline font-semibold text-gray-900">
<svg class="absolute left-1 top-1 h-5 w-5 text-blue-600" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M10.5 6h9.75M10.5 6a1.5 1.5 0 11-3 0m3 0a1.5 1.5 0 10-3 0M3.75 6H7.5m3 12h9.75m-9.75 0a1.5 1.5 0 01-3 0m3 0a1.5 1.5 0 00-3 0m-3.75 0H7.5m9-6h3.75m-3.75 0a1.5 1.5 0 01-3 0m3 0a1.5 1.5 0 00-3 0m-9.75 0h9.75" /></svg>
Perfectly Structured.
</dt>
<dd class="mt-2 block">Easily parse sections, tables, and key data points programmatically without complex regex or manual effort.</dd>
</div>
<div class="relative pl-9">
<dt class="inline font-semibold text-gray-900">
<svg class="absolute left-1 top-1 h-5 w-5 text-blue-600" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 11-18 0 9 9 0 0118 0z" /></svg>
Save Hundreds of Hours.
</dt>
<dd class="mt-2 block">Eliminate the most tedious step in text-based research—data cleaning and preparation—and get straight to discovery.</dd>
</div>
</dl>
</div>
</div>
</div>
<div class="bg-white py-24 sm:py-32">
<div class="mx-auto max-w-7xl px-6 lg:px-8">
<div class="mx-auto max-w-3xl lg:text-center">
<p class="text-base font-semibold leading-7 text-blue-600">Flexible & Fast Delivery</p>
<h2 class="mt-2 text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl">Data on Your Terms. Delivered in Seconds.</h2>
<p class="mt-6 text-lg leading-8 text-gray-600">Whether you need a real-time feed for event-driven strategies or decades of historical data for model training, our platform delivers.</p>
</div>
<div class="mx-auto mt-16 max-w-2xl sm:mt-20 lg:mt-24 lg:max-w-none">
<dl class="grid max-w-none grid-cols-1 gap-x-16 gap-y-16 lg:grid-cols-2">
<div class="relative pl-16">
<dt class="text-base font-semibold leading-7 text-gray-900">
<div class="absolute left-0 top-0 flex h-10 w-10 items-center justify-center rounded-lg bg-blue-600">
<svg class="h-6 w-6 text-white" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M17.25 6.75L22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3l-4.5 16.5" />
</svg>
</div>
Real-time API & Webhooks
</dt>
<dd class="mt-2 text-base leading-7 text-gray-600">Integrate a live feed of new filings directly into your models and platforms. Programmatically access any document in our archive on demand.</dd>
</div>
<div class="relative pl-16">
<dt class="text-base font-semibold leading-7 text-gray-900">
<div class="absolute left-0 top-0 flex h-10 w-10 items-center justify-center rounded-lg bg-blue-600">
<svg class="h-6 w-6 text-white" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375" />
</svg>
</div>
Bulk Downloads
</dt>
<dd class="mt-2 text-base leading-7 text-gray-600">Access decades of historical data delivered directly to your S3 bucket. Perfect for large-scale, longitudinal studies and backtesting.</dd>
</div>
</dl>
</div>
<div class="mt-20 rounded-2xl bg-gray-900 px-6 py-16 sm:px-10 lg:px-16">
<div class="mx-auto max-w-4xl">
<h3 class="text-center text-xl font-semibold leading-8 text-white">Built for Developers</h3>
<div class="mt-8 w-full flex-auto rounded-lg bg-gray-800 ring-1 ring-white/10">
<pre class="overflow-x-auto text-sm leading-6 text-gray-300 p-6"><code class="language-python"><span class="text-gray-500"># Install the official client</span>
pip install financialreports-client
<span class="text-gray-500"># Configure the client with your API key</span>
<span class="text-sky-300">from</span> financialreports <span class="text-sky-300">import</span> Client
client = Client(api_key=<span class="text-yellow-200">"YOUR_API_KEY"</span>)
<span class="text-gray-500"># Fetch the 5 latest annual reports</span>
latest_filings = client.get_filings(
filing_type=<span class="text-yellow-200">"Annual Report"</span>,
ordering=<span class="text-yellow-200">"-release_datetime"</span>,
page_size=<span class="text-green-300">5</span>
)
<span class="text-sky-300">for</span> filing <span class="text-sky-300">in</span> latest_filings.results:
<span class="text-purple-300">print</span>(f<span class="text-yellow-200">"{filing.company.name}: {filing.title}"</span>)</code></pre>
</div>
<div class="mt-8 flex justify-center">
<a href="https://docs.financialreports.eu/" target="_blank" rel="noopener noreferrer" class="text-sm font-semibold leading-6 text-white hover:text-gray-300">
Explore API Documentation <span aria-hidden="true">→</span>
</a>
</div>
</div>
</div>
</div>
</div>
<div class="bg-white py-24 sm:py-32">
<div class="mx-auto max-w-7xl px-6 lg:px-8">
<div class="mx-auto max-w-3xl text-center">
<p class="text-base font-semibold leading-7 text-blue-600">Proof of Performance</p>
<h2 class="mt-2 text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl">What Our Clients Build With Our Data</h2>
</div>
<div class="mx-auto mt-16 max-w-5xl flow-root">
<div class="relative">
<figure class="rounded-2xl bg-gray-50 p-8 shadow-lg ring-1 ring-gray-900/5 sm:p-12">
<blockquote class="text-center text-xl font-semibold leading-8 text-gray-900 sm:text-2xl sm:leading-9">
<p>“FinancialReports provides the clean, structured data layer we needed to build our internal LLM-powered search engine. Our analysts now have an informational advantage that was previously impossible to achieve at scale.”</p>
</blockquote>
<figcaption class="mt-10 text-center">
<div class="text-base">
<div class="font-semibold text-gray-900">Head of Data Science</div>
<div class="mt-1 text-gray-600">Global Asset Management Firm</div>
</div>
</figcaption>
</figure>
</div>
</div>
</div>
</div>
<div class="bg-gray-50">
<div class="relative isolate overflow-hidden">
<div class="mx-auto max-w-7xl px-6 py-24 sm:py-32 lg:px-8">
<div class="mx-auto max-w-2xl text-center">
<h2 class="text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl">Start Building Your Advantage.</h2>
<p class="mx-auto mt-6 max-w-xl text-lg leading-8 text-gray-600">Get access to the data layer that powers the future of financial intelligence. Explore the API or talk to our team to get started.</p>
<div class="mt-10 flex items-center justify-center gap-x-6">
<a href="/api-solutions/" class="rounded-md bg-finrep px-4 py-3 text-sm font-semibold text-white shadow-sm hover:bg-blue-700 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-finrep">Talk to a Data Expert</a>
<a href="https://docs.financialreports.eu/" target="_blank" rel="noopener noreferrer" class="text-sm font-semibold leading-6 text-gray-900">Check the Docs <span aria-hidden="true">→</span></a>
</div>
</div>
</div>
<div class="absolute left-1/2 top-0 -z-10 -translate-x-1/2 blur-3xl xl:-top-6" aria-hidden="true">
<div class="aspect-[1155/678] w-[72.1875rem] bg-gradient-to-tr from-[#90b9ff] to-[#0d9488] opacity-20" style="clip-path: polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)"></div>
</div>
</div>
</div>
<footer class="bg-gray-50 border-t border-gray-200 pt-16 pb-12">
<div class="mx-auto max-w-screen-2xl px-4 sm:px-6 lg:px-8">
<div class="grid grid-cols-1 md:grid-cols-12 gap-8 mb-12">
<div class="col-span-1 md:col-span-4">
<a href="/"
class="flex items-center mb-6"
data-track-event="footer-click"
data-link-name="Footer - Logo">
<img src="https://cdn.financialreports.eu/financialreports/static/assets/logo.svg" class="h-10" alt="FinancialReports Logo">
</a>
<p class="text-gray-600 mb-6 leading-relaxed">The premier platform for European financial data, serving investors and companies with 4.1 million+ filings from 13,675+ companies across 44 markets.</p>
<div class="flex space-x-5 mb-8">
<a href="https://www.linkedin.com/company/84158884/"
target="_blank"
rel="noopener noreferrer"
class="text-gray-500 hover:text-blue-600 transition"
data-track-event="footer-click"
data-link-name="Footer - Social - LinkedIn"
aria-label="Follow us on LinkedIn">
<span class="sr-only">LinkedIn</span>
<svg class="h-6 w-6"
fill="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg">
<path d="M4.98 3.5c0 1.381-1.11 2.5-2.48 2.5s-2.48-1.119-2.48-2.5c0-1.38 1.11-2.5 2.48-2.5s2.48 1.12 2.48 2.5zm.02 4.5h-5v16h5v-16zm7.982 0h-4.968v16h4.969v-8.399c0-4.67 6.029-5.052 6.029 0v8.399h4.988v-10.131c0-7.88-8.922-7.593-11.018-3.714v-2.155z"/>
</svg>
</a>
<a href="https://twitter.com/FinReportsEU"
target="_blank"
rel="noopener noreferrer"
class="text-gray-500 hover:text-blue-600 transition"
data-track-event="footer-click"
data-link-name="Footer - Social - X"
aria-label="Follow us on X">
<span class="sr-only">X (formerly Twitter)</span>
<svg class="h-6 w-6"
fill="currentColor"
viewBox="2 2 20 20" xmlns="http://www.w3.org/2000/svg">
<path d="M13.6823 10.6218L20.2391 3H18.6854L12.9921 9.61788L8.44486 3H3.2002L10.0765 13.0074L3.2002 21H4.75404L10.7663 14.0113L15.5549 21H20.7996L13.6823 10.6218ZM11.5541 13.0782L10.8574 12.0661L5.31391 4.16H7.70053L12.1742 10.6116L12.8709 11.6237L18.6861 19.88H16.2995L11.5541 13.0782Z"/>
</svg>
</a>
</div>
</div>
<div class="col-span-1 md:col-span-2">
<h3 class="text-lg font-semibold text-gray-900 mb-5">Financial Data</h3>
<ul class="space-y-3">
<li><a href="/companies/search/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Data - Companies">Companies</a></li>
<li><a href="/filings/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Data - Filings">Filings</a></li>
<li><a href="/insider-trades/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Data - Insider Trades">Insider Trades</a></li>
<li><a href="/companies/indices/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Data - Market Indices">Market Indices</a></li>
<li><a href="/companies/exchanges/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Data - Stock Exchanges">Stock Exchanges</a></li>
<li><a href="/companies/ipos/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Data - IPOs">IPOs</a></li>
</ul>
</div>
<div class="col-span-1 md:col-span-2">
<h3 class="text-lg font-semibold text-gray-900 mb-5">API</h3>
<ul class="space-y-3">
<li><a href="/api-solutions/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Tools - API Solutions">API Solutions</a></li>
<li><a href="/accounts/webhooks/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Account - Webhooks">Webhooks</a></li>
<li><a href="https://docs.financialreports.eu/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Account - API Documentation">API Documentation</a></li>
<li><a href="/companies/stats/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Account - Data Coverage">Data Coverage</a></li>
<li><a href="/financial-reporting-classification-framework/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - API - Classification Framework">Classification Framework</a></li>
<li><a href="/filings/filing-types/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Account - Filing Types">Filing Types</a></li>
<li><a href="/downloader/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Tools - Bulk Downloader">Bulk Downloader</a></li>
</ul>
</div>
<div class="col-span-1 md:col-span-2">
<h3 class="text-lg font-semibold text-gray-900 mb-5">Solutions For</h3>
<ul class="space-y-3">
<li><a href="/for/academic-research/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Solutions - Academic Research">Academic Research</a></li>
<li><a href="/for/hedge-funds/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Solutions - Hedge Funds">Hedge Funds</a></li>
<li><a href="/for/asset-managers/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Solutions - Asset Managers">Asset Managers</a></li>
<li><a href="/for/analytics-platforms/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Solutions - Analytics Platforms">Analytics Platforms</a></li>
</ul>
</div>
<div class="col-span-1 md:col-span-2">
<h3 class="text-lg font-semibold text-gray-900 mb-5">Company</h3>
<ul class="space-y-3">
<li><a href="/about/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Company - About Us">About Us</a></li>
<li><a href="/accounts/pricing/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Company - Pricing">Pricing</a></li>
<li><a href="/testimonials/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Company - Testimonials">Testimonials</a></li>
<li><a href="/blog/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Company - Blog">Blog</a></li>
<li><a href="/imprint/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Company - Imprint">Imprint</a></li>
<li><a href="/data-privacy/" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Company - Privacy Policy">Privacy Policy</a></li>
<li><a href="https://cdn.financialreports.eu/financialreports/static/assets/terms.pdf" class="text-gray-600 hover:text-blue-600 transition" data-track-event="footer-click" data-link-name="Footer - Company - Terms of Use">Terms of Use</a></li>
</ul>
</div>
</div>
<div class="text-center mb-12">
<a href="/report-data/"
class="inline-flex items-center px-5 py-3 border border-transparent text-base font-medium rounded-md text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 transition"
data-track-event="footer-click"
data-link-name="Footer - Report Data">
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 mr-2" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z" />
</svg>
Report Missing or Incorrect Data
</a>
</div>
<div class="border-t border-gray-200 pt-8">
<p class="text-sm text-gray-500 mb-4">© 2025 FinancialReports. All Rights Reserved.</p>
<div class="text-xs text-gray-400 space-y-2">
<p>No guarantee can be given for the completeness, correctness and accuracy of the listed contents.</p>
<p class="hidden md:block">
Disclaimer: The information, data, analyses, and opinions presented on FinancialReports are provided for informational purposes only, and are not intended for trading or investing purposes. We make reasonable efforts to ensure accuracy but cannot guarantee the Content will be free of errors. FinancialReports disclaims any liability for any loss arising from reliance on the Content. Your use of this site is solely at your own risk. Consult your financial advisor before making any investment decisions.
</p>
</div>
</div>
</div>
</footer>
<div
x-show="authOpen"
x-on:keydown.escape.window="closeAuthModal()"
x-transition:enter="transition ease-out duration-300"
x-transition:enter-start="opacity-0"
x-transition:enter-end="opacity-100"
x-transition:leave="transition ease-in duration-200"
x-transition:leave-start="opacity-100"
x-transition:leave-end="opacity-0"
class="fixed inset-0 z-50 flex items-center justify-center p-4"
x-cloak
aria-labelledby="auth-modal-title"
role="dialog"
aria-modal="true"
>
<div x-on:click="closeAuthModal()" class="fixed inset-0 bg-black/50" aria-hidden="true"></div>
<div
x-show="authOpen"
x-trap.inert.noscroll="authOpen"
x-transition:enter="transition ease-out duration-300"
x-transition:enter-start="opacity-0 scale-95"
x-transition:enter-end="opacity-100 scale-100"
x-transition:leave="transition ease-in duration-200"
x-transition:leave-start="opacity-100 scale-100"
x-transition:leave-end="opacity-0 scale-95"
class="relative w-full max-w-5xl mx-auto bg-white shadow-2xl rounded-xl overflow-hidden"
>
<button x-on:click="closeAuthModal()" class="absolute top-4 right-4 text-gray-400 hover:text-gray-600 z-10">
<svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path></svg>
</button>
<div class="flex flex-col lg:flex-row">
<div class="lg:w-1/2 bg-finrep/5 p-6 lg:p-8 flex flex-col justify-center">
<div>
<h2 id="auth-modal-title" class="text-3xl font-extrabold text-gray-900 tracking-tight">
Stop Wasting Time on Financial Research
</h2>
<p class="mt-2 text-xl font-bold text-finrep">
Unlock Europe's Largest Financial Database—Free
</p>
<p class="mt-3 text-base text-gray-600 leading-relaxed">
Get instant access to over 4.4M filings from 13,776 companies across 44 markets. No cost. No hassle. Just results.
</p>
<ul class="mt-4 space-y-2 text-gray-700 text-sm">
<li class="flex items-center">
<svg class="h-5 w-5 text-finrep mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
Save hours with instant data access
</li>
<li class="flex items-center">
<svg class="h-5 w-5 text-finrep mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
Trusted by leading financial institutions
</li>
<li class="flex items-center">
<svg class="h-5 w-5 text-finrep mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
Free forever—no strings attached
</li>
</ul>
</div>
</div>
<div class="lg:w-1/2 p-6 lg:p-8 flex flex-col justify-center">
<div class="border-b border-gray-200 mb-4">
<nav class="-mb-px flex space-x-6">
<button
:class="{ 'border-finrep text-finrep': activeTab === 'register', 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300': activeTab !== 'register' }"
@click="activeTab = 'register'"
class="whitespace-nowrap pb-4 px-1 border-b-2 font-semibold text-sm focus:outline-none"
>
Register
</button>
<button
:class="{ 'border-finrep text-finrep': activeTab === 'login', 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300': activeTab !== 'login' }"
@click="activeTab = 'login'"
class="whitespace-nowrap pb-4 px-1 border-b-2 font-semibold text-sm focus:outline-none"
>
Log In
</button>
</nav>
</div>
<div x-show="activeTab === 'register'" x-cloak>
<form @submit.prevent="submitRegister($event)" class="space-y-4" data-action="/accounts/register/">
<input type="hidden" name="csrfmiddlewaretoken" value="12qb7DsWM8BPrpLP3HoRDoV8SD4u7bYZlM6L4AdRBK0blLps4mSUryH24TARcRs2">
<input type="hidden" name="next" :value="nextUrl">
<div x-show="registerError" x-text="registerError" class="p-3 bg-red-100 text-red-700 text-sm font-semibold rounded-lg" x-cloak></div>
<div x-show="registerSuccess" x-text="registerSuccess" class="p-3 bg-green-100 text-green-700 text-sm font-semibold rounded-lg" x-cloak></div>
<div>
<label for="reg_email" class="block text-sm font-semibold text-gray-800">Email Address</label>
<input id="reg_email" name="email" type="email" autocomplete="email" required class="mt-1 block w-full border border-gray-300 rounded-lg shadow-sm py-2 px-3 focus:outline-none focus:ring-2 focus:ring-finrep focus:border-finrep text-sm placeholder-gray-400" placeholder="Your email goes here">
</div>
<div>
<label for="reg_full_name" class="block text-sm font-semibold text-gray-800">Full Name</label>
<input id="reg_full_name" name="full_name" type="text" autocomplete="name" required class="mt-1 block w-full border border-gray-300 rounded-lg shadow-sm py-2 px-3 focus:outline-none focus:ring-2 focus:ring-finrep focus:border-finrep text-sm placeholder-gray-400" placeholder="Enter your full name">
</div>
<div>
<label for="reg_password" class="block text-sm font-semibold text-gray-800">Password</label>
<input id="reg_password" name="password" type="password" autocomplete="new-password" required class="mt-1 block w-full border border-gray-300 rounded-lg shadow-sm py-2 px-3 focus:outline-none focus:ring-2 focus:ring-finrep focus:border-finrep text-sm placeholder-gray-400" placeholder="Create a strong password">
</div>
<div>
<button type="submit" class="w-full flex justify-center py-2 px-4 rounded-lg shadow-md text-base font-semibold text-white bg-finrep hover:bg-finrep/90 focus:outline-none focus:ring-4 focus:ring-finrep/50 transition duration-200">
Get Free Access
</button>
</div>
</form>
<div class="mt-4">
<div class="relative"><div class="absolute inset-0 flex items-center"><div class="w-full border-t border-gray-300"></div></div><div class="relative flex justify-center text-sm"><span class="px-3 bg-white text-gray-500">Or sign up with</span></div></div>
<div class="mt-4 grid grid-cols-2 gap-3">
<a :href="'/accounts/social-login/google/?next=' + encodeURIComponent(nextUrl)" class="flex justify-center py-2 px-3 border border-gray-300 rounded-lg shadow-sm bg-white text-sm font-medium text-gray-700 hover:bg-gray-50"><svg class="h-5 w-5 mr-1" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M19.99 10.187c0-.82-.069-1.417-.216-2.037H10.2v3.698h5.62c-.113.92-.725 2.303-2.084 3.233l-.02.124 3.028 2.292.21.02c1.926-1.738 3.037-4.296 3.037-7.33z" fill="#4285F4"/><path d="M10.2 19.931c2.753 0 5.064-.886 6.753-2.414l-3.218-2.436c-.862.587-2.017.997-3.536.997a6.126 6.126 0 0 1-5.801-4.141l-.12.01-3.148 2.38-.041.112c1.677 3.256 5.07 5.492 9.11 5.492z" fill="#34A853"/><path d="M4.398 11.937a6.008 6.008 0 0 1-.34-1.971c0-.687.125-1.351.329-1.971l-.006-.132-3.188-2.42-.104.05A9.79 9.79 0 0 0 .001 9.965a9.79 9.79 0 0 0 1.088 4.473l3.309-2.502z" fill="#FBBC05"/><path d="M10.2 3.853c1.914 0 3.206.809 3.943 1.484l2.878-2.746C15.253.985 12.953 0 10.199 0 6.16 0 2.768 2.237 1.09 5.492l3.297 2.503A6.152 6.152 0 0 1 10.2 3.853z" fill="#EA4335"/></svg>Google</a>
<a :href="'/accounts/social-login/microsoft/?next=' + encodeURIComponent(nextUrl)" class="flex justify-center py-2 px-3 border border-gray-300 rounded-lg shadow-sm bg-white text-sm font-medium text-gray-700 hover:bg-gray-50"><svg class="h-5 w-5 mr-1" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11 11H0V0h11v11z" fill="#F25022"/><path d="M23 11H12V0h11v11z" fill="#7FBA00"/><path d="M11 23H0V12h11v11z" fill="#00A4EF"/><path d="M23 23H12V12h11v11z" fill="#FFB900"/></svg>Microsoft</a>
</div>
</div>
</div>
<div x-show="activeTab === 'login'" x-cloak>
<form @submit.prevent="submitLogin($event)" class="space-y-4" data-action="/accounts/login/">
<input type="hidden" name="csrfmiddlewaretoken" value="12qb7DsWM8BPrpLP3HoRDoV8SD4u7bYZlM6L4AdRBK0blLps4mSUryH24TARcRs2">
<input type="hidden" name="next" :value="nextUrl">
<div x-show="loginError" x-text="loginError" class="p-3 bg-red-100 text-red-700 text-sm font-semibold rounded-lg" x-cloak></div>
<div>
<label for="login_identifier" class="block text-sm font-semibold text-gray-800">Email or Username</label>
<input id="login_identifier" name="identifier" type="text" autocomplete="username" required class="mt-1 block w-full border border-gray-300 rounded-lg shadow-sm py-2 px-3 focus:outline-none focus:ring-2 focus:ring-finrep focus:border-finrep text-sm placeholder-gray-400">
</div>
<div>
<label for="login_password" class="block text-sm font-semibold text-gray-800">Password</label>
<input id="login_password" name="password" type="password" autocomplete="current-password" required class="mt-1 block w-full border border-gray-300 rounded-lg shadow-sm py-2 px-3 focus:outline-none focus:ring-2 focus:ring-finrep focus:border-finrep text-sm placeholder-gray-400">
</div>
<div>
<button type="submit" class="w-full flex justify-center py-2 px-4 rounded-lg shadow-md text-base font-semibold text-white bg-finrep hover:bg-finrep/90 focus:outline-none focus:ring-4 focus:ring-finrep/50 transition duration-200">
Log In
</button>
</div>
</form>
<div class="mt-4">
<div class="relative"><div class="absolute inset-0 flex items-center"><div class="w-full border-t border-gray-300"></div></div><div class="relative flex justify-center text-sm"><span class="px-3 bg-white text-gray-500">Or log in with</span></div></div>
<div class="mt-4 grid grid-cols-2 gap-3">
<a :href="'/accounts/social-login/google/?next=' + encodeURIComponent(nextUrl)" class="flex justify-center py-2 px-3 border border-gray-300 rounded-lg shadow-sm bg-white text-sm font-medium text-gray-700 hover:bg-gray-50"><svg class="h-5 w-5 mr-1" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M19.99 10.187c0-.82-.069-1.417-.216-2.037H10.2v3.698h5.62c-.113.92-.725 2.303-2.084 3.233l-.02.124 3.028 2.292.21.02c1.926-1.738 3.037-4.296 3.037-7.33z" fill="#4285F4"/><path d="M10.2 19.931c2.753 0 5.064-.886 6.753-2.414l-3.218-2.436c-.862.587-2.017.997-3.536.997a6.126 6.126 0 0 1-5.801-4.141l-.12.01-3.148 2.38-.041.112c1.677 3.256 5.07 5.492 9.11 5.492z" fill="#34A853"/><path d="M4.398 11.937a6.008 6.008 0 0 1-.34-1.971c0-.687.125-1.351.329-1.971l-.006-.132-3.188-2.42-.104.05A9.79 9.79 0 0 0 .001 9.965a9.79 9.79 0 0 0 1.088 4.473l3.309-2.502z" fill="#FBBC05"/><path d="M10.2 3.853c1.914 0 3.206.809 3.943 1.484l2.878-2.746C15.253.985 12.953 0 10.199 0 6.16 0 2.768 2.237 1.09 5.492l3.297 2.503A6.152 6.152 0 0 1 10.2 3.853z" fill="#EA4335"/></svg>Google</a>
<a :href="'/accounts/social-login/microsoft/?next=' + encodeURIComponent(nextUrl)" class="flex justify-center py-2 px-3 border border-gray-300 rounded-lg shadow-sm bg-white text-sm font-medium text-gray-700 hover:bg-gray-50"><svg class="h-5 w-5 mr-1" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11 11H0V0h11v11z" fill="#F25022"/><path d="M23 11H12V0h11v11z" fill="#7FBA00"/><path d="M11 23H0V12h11v11z" fill="#00A4EF"/><path d="M23 23H12V12h11v11z" fill="#FFB900"/></svg>Microsoft</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div
x-show="upgradeOpen"
x-on:keydown.escape.window="closeUpgradeModal()"
x-transition:enter="transition ease-out duration-300"
x-transition:enter-start="opacity-0"
x-transition:enter-end="opacity-100"
x-transition:leave="transition ease-in duration-200"
x-transition:leave-start="opacity-100"
x-transition:leave-end="opacity-0"
class="fixed inset-0 z-50 flex items-center justify-center p-4"
x-cloak
aria-labelledby="upgrade-modal-title"
role="dialog"
aria-modal="true"
>
<div x-on:click="closeUpgradeModal()" class="fixed inset-0 bg-black/60" aria-hidden="true"></div>
<div
x-show="upgradeOpen"
x-trap.inert.noscroll="upgradeOpen"
x-transition:enter="transition ease-out duration-300"
x-transition:enter-start="opacity-0 scale-95"
x-transition:enter-end="opacity-100 scale-100"
x-transition:leave="transition ease-in duration-200"
x-transition:leave-start="opacity-100 scale-100"
x-transition:leave-end="opacity-0 scale-95"
class="relative w-full max-w-md mx-auto bg-white shadow-2xl rounded-xl overflow-hidden"
>
<div class="p-6 text-center">
<div class="w-12 h-12 mx-auto flex items-center justify-center bg-finrep/10 rounded-full">
<svg class="w-6 h-6 text-finrep" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M11.48 3.499a.562.562 0 011.04 0l2.125 5.111a.563.563 0 00.475.345h5.372c.54 0 .73.784.348 1.106l-4.36 3.162a.563.563 0 00-.182.557l1.635 5.253c.16.512-.463.926-.937.564L12 16.533a.563.563 0 00-.626 0l-4.373 3.162c-.474.363-1.097-.052-.937-.564l1.636-5.253a.563.563 0 00-.182-.557l-4.36-3.162c-.382-.322-.192-1.106.348-1.106h5.372a.563.563 0 00.475-.345L11.48 3.5z" />
</svg>
</div>
<h2 id="upgrade-modal-title" class="mt-4 text-xl font-bold text-gray-900" x-text="'Unlock ' + featureName"></h2>
<p class="mt-2 text-sm text-gray-600 leading-relaxed">
This premium feature is designed for professionals. Upgrade your plan to gain immediate access and enhance your research capabilities.
</p>
</div>
<div class="px-6 pb-6 mt-2 grid grid-cols-2 gap-3">
<button
type="button"
@click="closeUpgradeModal()"
class="inline-flex justify-center rounded-lg border border-gray-300 bg-white px-4 py-2 text-sm font-semibold text-gray-700 shadow-sm hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2"
>
Maybe Later
</button>
<a
:href="pricingUrl"
class="inline-flex justify-center rounded-lg border border-transparent bg-finrep px-4 py-2 text-sm font-semibold text-white shadow-sm hover:bg-finrep-dark focus:outline-none focus:ring-2 focus:ring-finrep focus:ring-offset-2 transition-colors duration-150"
>
Upgrade Now
</a>
</div>
</div>
</div>
<div x-data="{ open: false }" class="fixed bottom-4 right-4 z-[100]">
<button @click="open = true"
class="bg-finrep text-white rounded-full p-3 shadow-lg hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-finrep transition-transform hover:scale-110"
aria-label="Contact a data expert">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-6 w-6">
<path stroke-linecap="round" stroke-linejoin="round" d="M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 5.25h.008v.008H12v-.008Z" />
</svg>
</button>
<div x-show="open"
@keydown.escape.window="open = false"
x-transition:enter="transition ease-out duration-300"
x-transition:enter-start="opacity-0"
x-transition:enter-end="opacity-100"
x-transition:leave="transition ease-in duration-200"
x-transition:leave-start="opacity-100"
x-transition:leave-end="opacity-0"
class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4"
x-cloak>
<div @click.away="open = false"
x-show="open"
x-transition:enter="transition ease-out duration-300"
x-transition:enter-start="opacity-0 scale-95"
x-transition:enter-end="opacity-100 scale-100"
x-transition:leave="transition ease-in duration-200"
x-transition:leave-start="opacity-100 scale-100"
x-transition:leave-end="opacity-0 scale-95"
class="bg-white rounded-xl shadow-2xl w-full max-w-lg mx-auto">
<div class="p-6 sm:p-8">
<div class="flex justify-between items-start">
<div>
<h2 class="text-2xl font-bold text-gray-900">Talk to a Data Expert</h2>
<p class="mt-1 text-gray-600">Have a question? We'll get back to you promptly.</p>
</div>
<button @click="open = false" class="text-gray-400 hover:text-gray-600 -mt-2 -mr-2 p-2 rounded-full">
<svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" /></svg>
</button>
</div>
<form id="assistant-form" class="mt-6 space-y-4">
<input type="hidden" name="csrfmiddlewaretoken" value="12qb7DsWM8BPrpLP3HoRDoV8SD4u7bYZlM6L4AdRBK0blLps4mSUryH24TARcRs2">
<input type="hidden" name="lead_source" value="On-Page Assistant">
<div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
<div>
<label for="assistant_first_name" class="block text-sm font-medium text-gray-700">First Name<span class="text-red-500">*</span></label>
<input type="text" id="assistant_first_name" name="first_name" required class="mt-1 w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:ring-finrep focus:border-finrep">
</div>
<div>
<label for="assistant_last_name" class="block text-sm font-medium text-gray-700">Last Name<span class="text-red-500">*</span></label>
<input type="text" id="assistant_last_name" name="last_name" required class="mt-1 w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:ring-finrep focus:border-finrep">
</div>
</div>
<div>
<label for="assistant_email" class="block text-sm font-medium text-gray-700">Work Email<span class="text-red-500">*</span></label>
<input type="email" id="assistant_email" name="email" required class="mt-1 w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:ring-finrep focus:border-finrep">
</div>
<div>
<label for="assistant_phone" class="block text-sm font-medium text-gray-700">Phone Number<span class="text-red-500">*</span></label>
<input type="tel" id="assistant_phone" name="phone" required class="mt-1 w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:ring-finrep focus:border-finrep">
</div>
<div>
<label for="assistant_notes" class="block text-sm font-medium text-gray-700">How can we help?</label>
<textarea id="assistant_notes" name="notes" rows="3" class="mt-1 w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:ring-finrep focus:border-finrep"></textarea>
</div>
<div class="pt-2">
<button type="submit" class="w-full bg-finrep hover:bg-blue-700 text-white font-semibold py-3 px-4 rounded-md shadow-sm transition duration-150">Send Message</button>
</div>
<div id="assistant-form-success" class="hidden text-green-600 text-center text-sm pt-2"></div>
<div id="assistant-form-error" class="hidden text-red-600 text-center text-sm pt-2"></div>
</form>
</div>
</div>
</div>
</div>
<script type="d945f6b4b81453fb319b7942-text/javascript">
document.addEventListener('DOMContentLoaded', function() {
const form = document.getElementById('assistant-form');
if (!form) return;
const successDiv = document.getElementById('assistant-form-success');
const errorDiv = document.getElementById('assistant-form-error');
const submitButton = form.querySelector('button[type="submit"]');
const originalButtonText = submitButton.innerText;
form.addEventListener('submit', function(e) {
e.preventDefault();
successDiv.classList.add('hidden');
errorDiv.classList.add('hidden');
submitButton.disabled = true;
submitButton.innerText = 'Sending...';
const formData = new FormData(form);
fetch('/pricing/submit-form/', {
method: 'POST',
body: formData,
})
.then(response => response.json().then(data => ({ ok: response.ok, data })))
.then(({ ok, data }) => {
if (ok && data.success) {
successDiv.textContent = 'Thank you! Your message has been sent.';
successDiv.classList.remove('hidden');
form.reset();
submitButton.innerText = 'Sent!';
setTimeout(() => {
submitButton.disabled = false;
submitButton.innerText = originalButtonText;
}, 3000);
} else {
throw new Error(data.error || 'An unknown error occurred.');
}
})
.catch(error => {
errorDiv.textContent = error.message;
errorDiv.classList.remove('hidden');
submitButton.disabled = false;
submitButton.innerText = originalButtonText;
});
});
});
</script>
<script src="/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="d945f6b4b81453fb319b7942-|49" defer></script><script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"ae7d6a40605443d2a560765f0d087559","server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'980654336f9e801b',t:'MTc1ODA4ODI1Ng=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
</html>