Methodology
Almost everything on the radar was gathered from public sources by automated processes; the rest is sent in by companies themselves and by other people, and we review it by hand. Here is where each thing comes from, with which filters, and where it falls short.
Last data collection: 12 October 2026.
The dataset today
| Figure | Companies |
|---|---|
| On the radar | 4,720 |
| Placed by the postal code on their website | 3,875 |
| Placed by the town on their GitHub profile | 844 |
| With a checked tax ID (CIF) | 2,675 |
| With some stack data | 1,051 |
| With a link to their jobs page | 1,751 |
| With open tech jobs | 48 |
| Profiles verified by the company | 1 |
| Provinces with at least one company | 51 of 52 |
Where companies come from
For now, the automated source of companies is GitHub organizations that say they are in Spain. We search for “Spain”, “España” and about seventy city and region names, and keep those with their own website on their profile.
From there we drop universities, research groups, communities, training centres and profiles whose website is a social network or a personal page. Then we visit each website looking for a Spanish postal code and a tax ID. Those we can place on the map get in: by the postal code on their website or, if it publishes none, by the town on their GitHub profile. The tax ID is no longer required to get in, but every profile shows whether it has been checked.
| Step (collection of 9 October 2026) | Organizations |
|---|---|
| GitHub organizations located in Spain | 21,459 |
| With a corporate website and looking like a company | 10,755 |
| Whose website responds | 8,313 |
| With a Spanish postal code on the website | 4,229 |
| Of those, with a valid tax ID | 2,869 |
| No postal code, but a Spanish town on their GitHub profile | 934 |
How we know it is a company
The main signal is the tax ID (CIF). In Spain, a website's legal notice must identify its owner, so we read the home page, the legal notice and the contact page looking for a CIF, and verify its check digit.
- The same CIF on two domains is treated as one company: usually its own site and a product's.
- CIFs belonging to public administrations, public bodies and religious entities (letters P, Q, R and S) are left out.
- Associations and foundations (letter G) are kept, because some are technology centres with tech teams.
- 2,045 profiles have no checked CIF. Many are real companies whose website publishes it somewhere we cannot read; in the sample we reviewed, about three in four were. They are marked on the profile and on the map, and can be hidden with a filter.
- Without a CIF we are stricter: .org domains, government and university domains, pages hosted on free sites, and names typical of associations, schools or personal projects are left out.
Location
Location comes from the postal code the company publishes on its website, almost always in the legal notice. We turn it into town, province and region using the GeoNames postal code table.
If the website publishes no postal code, we use the town the organization states on its GitHub profile, and the profile says so.
This has two consequences. There is almost always a single location per company, usually the registered address and not necessarily where the team works. And the point on the map goes to the centre of the town, shifted a few hundred metres so points don't overlap: it is not the exact address.
Stack
A profile's stack comes from two places:
- Public repositories: the main languages of the organization's GitHub repos, only if they have had activity since October 2024. We don't count HTML, CSS or shell scripts.
- Job posts: technologies that appear in the text of their open tech jobs, matched against a closed list of about forty.
It is a partial picture. What a company publishes in the open is not always what it uses internally, and most publish nothing: that is why many profiles have no stack.
Job posts
We look on each company's website for a link to its jobs page. If that page uses one of the applicant tracking systems with public data (Greenhouse, Lever, Ashby, Personio, Workable, Teamtailor, Recruitee, SmartRecruiters or Factorial), we read its open posts.
We count as a “tech job in Spain” one whose title is a technical role and which is located in Spain, remote, or has no location. It is a keyword filter, so some cases slip through. If the page lists other companies' vacancies, as an investment fund's does, we don't count them. The figure is a snapshot of the day we looked.
We can only read a small part: most companies have a custom-built jobs page, and for those we keep the link but not the posts.
What people send us
Anyone can suggest a missing company or propose changes to a profile from the website itself, without signing up. A person reviews every proposal before accepting it, and nothing is published without that review.
If the sender says they work at the company, their data comes in as “declared”. If it is a third party, it comes in as observed, with “comunidad” (community) as its source. The contact email is optional, is only used to resolve questions about the proposal, and is not published.
Declared and observed
Every piece of data on a profile states its origin. “Observed” is what we have seen from outside, with its source and date. “Declared” is what the company says about itself when it claims its profile.
A company can add to and correct what is declared, but cannot delete what is observed. Today almost everything is observed.
What we don't do
- We don't extract data from LinkedIn or from any site whose terms forbid it.
- We don't collect data about people: no employees, no profiles, no emails.
- We don't buy databases: everything published can be redistributed under an open licence.
Known limits
- Source bias: almost all companies get in by having a GitHub organization. Almost all large non-tech companies with tech teams (banking, energy, retail) are missing.
- Almost no profile has been reviewed by hand. We estimate that some are not companies in the strict sense, or are no longer active.
- Having a GitHub account does not guarantee having a tech team: among profiles with no checked CIF and no stack there are real businesses from other sectors.
- We don't yet have the number of tech people per office: that will only come from the companies themselves.
- We don't know yet whether each company is a product company, a consultancy or from another sector.
- A company with several offices almost always appears in only one.
Changelog
- Job posts: we now read careers pages built with Factorial and read Teamtailor ones better. We also recognise as Spain any post located in a Spanish town, not only in the big cities.
- The tax ID is no longer required to get in: companies with a postal code on their website are added even if we found no CIF, as are those we can only place by the town on their GitHub profile. Every profile shows whether its CIF has been checked. Filters are stricter for those without one, and some city names are unified.
- Forms to suggest companies and to fix or complete profiles. Every proposal is reviewed by hand before it is published.
- First load. Crawl of GitHub organizations in Spain, location and tax ID from each company's website, stack from public repositories, and a first reading of job posts.