Find CompanyWall Slovenia Financial History

Site companywall.siTask find-companywall-financial-historyVersion v2Updated Sep 2, 2026Category financial-research

Resolve Slovenian companies on the regional CompanyWall network and extract annual revenue and employee counts from their Slovenian financial pages. This skill was captured from a live agent session on companywall.si and is published here as a reusable recipe for agents.

NoteSelectors and URL schemes drift as sites change. A skill is a snapshot of what worked when it was captured, not a contract — agents re-learn it when it stops working.

Retrieve the published annual total revenue (celotni prihodki) and average number of employees (povprečno število zaposlenih) for one or more Slovenian companies, preserving the source URL and explicitly reporting unavailable years without guessing. CompanyWall is a regional network with separate country sites; this skill covers only the Slovenian .si site. Other countries need their own skills because routes and financial labels differ.

Use Cases

Use when the caller provides company names, tax numbers, registration numbers, or other searchable identifiers and requests the latest 3–5 published financial years. The workflow supports multiple companies independently; do not assume that all companies have the same years available.

Automation Flow

  1. Resolve each company through the single-navigation search URL https://www.companywall.si/iskanje?n={query}. On the search-results page, run this evaluator to return candidate company links and select the result matching the requested company name or identifier:
(() => [...document.querySelectorAll('a[href*="/podjetje/"]')].map(a => ({text:(a.innerText||a.textContent||'').trim().replace(/\s+/g,' '), href:new URL(a.getAttribute('href'), location.href).href})).filter(x => x.href.includes('/podjetje/')))()
  1. Do not invent the opaque CompanyWall identifier. From the selected result, use its exact /podjetje/{slug}/{opaque-id} URL and append /financni-podatki, yielding https://www.companywall.si/podjetje/{slug}/{company-id}/financni-podatki.
  2. Navigate directly to each resolved financial-data URL and run the following self-contained evaluator on that page. It extracts year-column values from financial tables, normalizes common Slovenian number formatting, and returns only explicitly present values:
(() => {
const norm = s => (s||'').toString().normalize('NFD').replace(/[\u0300-\u036f]/g,'').toLowerCase().replace(/\s+/g,' ').trim();
const number = s => {
  s=(s||'').replace(/[^0-9,.-]/g,'').trim();
  if (!s) return null;
  const neg=/^\(.*\)$/.test(s);
  s=s.replace(/[()]/g,'');
  if (s.includes(',') && s.includes('.')) s=s.lastIndexOf(',')>s.lastIndexOf('.') ? s.replace(/\./g,'').replace(',','.') : s.replace(/,/g,'');
  else if (s.includes(',')) s=s.replace(',','.');
  const v=Number(s);
  return Number.isFinite(v) ? (neg ? -v : v) : null;
};
const yearRE=/\b(19|20)\d{2}\b/;
const isRevenue=s=>/(celotni prihodki|prihodki skupaj|totalni prihodki)/.test(norm(s));
const isEmployees=s=>/(povprecno stevilo zaposlenih|povprecno zaposlenih|povprecno stevilo delavcev)/.test(norm(s));
const out={url:location.href, company:(document.querySelector('h1')?.innerText||document.title||'').trim(), years:{}, tables:[]};
for (const table of document.querySelectorAll('table')) {
  const rows=[...table.querySelectorAll('tr')].map(tr=>[...tr.querySelectorAll('th,td')].map(c=>(c.innerText||c.textContent||'').trim()));
  const yearByCol={};
  for (const r of rows) r.forEach((v,i)=>{const m=v.match(yearRE); if(m) yearByCol[i]=m[0];});
  if (!Object.keys(yearByCol).length) continue;
  const found=[];
  for (const r of rows) {
    const label=r.find(v=>v && !yearRE.test(v))||'';
    const metric=isRevenue(label)?'totalRevenue':isEmployees(label)?'averageEmployees':null;
    if (!metric) continue;
    r.forEach((v,i)=>{const y=yearByCol[i]; if(y && v!==label){if(!out.years[y]) out.years[y]={year:Number(y),totalRevenue:null,averageEmployees:null}; const n=number(v); if(n!==null) out.years[y][metric]=n;}});
    found.push(metric);
  }
  if(found.length) out.tables.push({metrics:[...new Set(found)],years:Object.keys(yearByCol).map(Number).sort()});
}
out.records=Object.values(out.years).sort((a,b)=>a.year-b.year);
delete out.years;
out.availableYears=out.records.map(x=>x.year);
return out;
})()
  1. For each company, use the returned records as the authoritative data. Select the latest 3–5 years that are actually published, or the caller’s requested year window. Add rows with totalRevenue: null and/or averageEmployees: null only when the page explicitly shows a year but no value; mark years outside availableYears as missing rather than estimating them. Include the exact financial-data URL as the source for every company.

Possible Friction Points

  • CompanyWall search results expose an opaque company ID in the /podjetje/{slug}/{id} link. A company name alone is not sufficient to construct the detail URL safely; resolve the result first.
  • CompanyWall also serves Croatia, Serbia, Bosnia and Herzegovina, and Montenegro. This page covers Slovenia only. Other country sites use different search, company, and financial path segments and localized metric labels; do not apply the Slovenian routes or revenue labels to them.
  • The useful financial page is the /financni-podatki child route, not merely the company overview page.
  • Search commonly uses the n query parameter: /iskanje?n={query}. It accepts the supplied identifier or search text; URL-encode non-ASCII names.
  • A cookie-consent overlay may block the first interaction. If present, accept it once with button#agree-btn; this is not needed when direct navigation is unobstructed.
  • Financial tables may contain years in column headers and Slovenian labels in the first column. Preserve nulls and do not infer missing years from neighboring values. The table selectors are structural but should be checked if CompanyWall changes its markup.

Call it

GET https://production-sfo.browserless.io/skills?token=TOKEN-HERE&domain=companywall.si&task=find-companywall-financial-history