Most requested data engineering skills in Germany
Share of postings naming each tool. A posting counts once per tool, however often it is mentioned.
Share of the 699 postings carrying a description long enough to read requirements from.
Do data engineering jobs in Germany require German?
The first question anyone moving to Germany asks, and the one no other job-market tracker answers. Only an explicit competency phrase counts — most German postings are written in German regardless — so this is a floor, not a ceiling.
of postings state a German-language requirement — 267 of 699.
What the published number is a share of
Most job-market trackers give you a count and not the attrition behind it. These are the stages the pipeline applies, in order, from the rows it read to the postings these figures are built on.
10,208 rows read, 699 postings published — 6.8%. The right-hand column is each stage's share of the rows read, not of the stage above it.
Data engineering jobs by city
Cities with at least two postings. Salary is advertised, not paid, and only a minority of postings state one — the count behind every median is printed beside it.
| City | Postings | Home office | Median salary |
|---|---|---|---|
| Berlin berlin | 56 | 14 | €60,000 n=3 |
| München bayern | 45 | 4 | €60,000 n=4 |
| Frankfurt am Main hessen | 39 | 7 | €64,500 n=2 |
| Hamburg hamburg | 35 | 11 | €80,000 n=2 |
| Köln nordrhein_westfalen | 27 | 4 | €54,000 n=4 |
| Stuttgart baden_wuerttemberg | 26 | 4 | €75,000 n=1 |
| Düsseldorf nordrhein_westfalen | 19 | 1 | €70,000 n=3 |
| Dresden sachsen | 18 | 2 | €67,500 n=2 |
| Unknown | 17 | 3 | €70,000 n=1 |
| Nürnberg, Mittelfranken bayern | 16 | 3 | €55,000 n=2 |
| Berlin | 14 | 0 | — |
| Donauwörth bayern | 13 | 0 | €60,500 n=4 |
| Erlangen bayern | 13 | 0 | €70,000 n=3 |
| Essen, Ruhr nordrhein_westfalen | 12 | 2 | — |
| Leipzig sachsen | 10 | 1 | — |
| Bonn nordrhein_westfalen | 9 | 2 | — |
| Karlsruhe, Baden baden_wuerttemberg | 9 | 1 | €65,000 n=4 |
| Mannheim baden_wuerttemberg | 8 | 1 | €65,000 n=2 |
| Duisburg nordrhein_westfalen | 7 | 0 | €62,500 n=2 |
| Munich | 7 | 0 | — |
| München | 7 | 0 | — |
| Hamburg | 6 | 0 | — |
| Ulm, Donau baden_wuerttemberg | 6 | 1 | €70,000 n=1 |
| Burgwedel niedersachsen | 5 | 2 | — |
| Eschborn, Taunus hessen | 5 | 0 | — |
| Münster, Westfalen nordrhein_westfalen | 5 | 3 | — |
| Würzburg bayern | 5 | 0 | — |
| Bad Grönenbach, Allgäu bayern | 4 | 0 | — |
| Bremen bremen | 4 | 0 | — |
| Darmstadt hessen | 4 | 0 | — |
| Hannover niedersachsen | 4 | 2 | — |
| Oberkochen baden_wuerttemberg | 4 | 0 | €70,000 n=2 |
| Osnabrück niedersachsen | 4 | 1 | €59,500 n=2 |
| Augsburg, Bayern bayern | 3 | 0 | — n=1 |
| Bielefeld nordrhein_westfalen | 3 | 0 | €45,000 n=1 |
| Böblingen baden_wuerttemberg | 3 | 1 | €93,050 n=1 |
| Chemnitz, Sachsen sachsen | 3 | 1 | — |
| Dortmund nordrhein_westfalen | 3 | 0 | — |
| Ettlingen baden_wuerttemberg | 3 | 3 | — |
| Göttingen niedersachsen | 3 | 0 | — |
| Hemmingen, Württemberg baden_wuerttemberg | 3 | 1 | — |
| Kassel, Hessen hessen | 3 | 1 | — |
| Köln | 3 | 0 | — |
| Laupheim baden_wuerttemberg | 3 | 0 | €70,000 n=1 |
| Leverkusen nordrhein_westfalen | 3 | 1 | — |
| Manching bayern | 3 | 0 | — |
| Oldenburg (Oldb) niedersachsen | 3 | 1 | €65,000 n=1 |
| Sindelfingen baden_wuerttemberg | 3 | 0 | — |
| Stuttgart | 3 | 0 | — |
| Aalen, Württemberg baden_wuerttemberg | 2 | 0 | €55,000 n=1 |
| Bad Homburg vor der Höhe hessen | 2 | 0 | — |
| Berlin, Berlin | 2 | 0 | — |
| Coburg bayern | 2 | 1 | — |
| Coesfeld nordrhein_westfalen | 2 | 1 | — |
| Düsseldorf, North Rhine-Westphalia | 2 | 0 | — |
| Espelkamp nordrhein_westfalen | 2 | 1 | — |
| Essenbach, Niederbayern bayern | 2 | 0 | — |
| Frankfurt am Main | 2 | 1 | — |
| Garching bei München bayern | 2 | 1 | — |
| Gersthofen bayern | 2 | 0 | — |
| Gescher nordrhein_westfalen | 2 | 2 | — |
| Gießen, Lahn hessen | 2 | 1 | — |
| Herzogenaurach bayern | 2 | 0 | — |
| Immenstaad am Bodensee baden_wuerttemberg | 2 | 0 | — |
| Ingolstadt, Donau bayern | 2 | 1 | — |
| Kiel schleswig_holstein | 2 | 1 | €35,000 n=1 |
| Krefeld nordrhein_westfalen | 2 | 0 | — |
| Leinfelden-Echterdingen baden_wuerttemberg | 2 | 0 | €60,000 n=1 |
| Leipzig | 2 | 1 | — |
| Lemwerder niedersachsen | 2 | 0 | €70,000 n=1 |
| Ludwigsfelde brandenburg | 2 | 0 | €30,000 n=1 |
| Mannheim | 2 | 0 | — |
| Massen bei Finsterwalde brandenburg | 2 | 0 | — |
| Mülheim an der Ruhr nordrhein_westfalen | 2 | 0 | — |
| Neuss nordrhein_westfalen | 2 | 1 | — |
| Nördlingen bayern | 2 | 0 | — |
| Paderborn nordrhein_westfalen | 2 | 0 | — |
| Pforzheim baden_wuerttemberg | 2 | 2 | — |
| Potsdam brandenburg | 2 | 0 | — |
| Pullach im Isartal bayern | 2 | 0 | — |
| Ratingen nordrhein_westfalen | 2 | 1 | €66,000 n=1 |
| Raunheim hessen | 2 | 1 | — |
| Sankt Augustin nordrhein_westfalen | 2 | 0 | — |
| Sassenberg, Westfalen nordrhein_westfalen | 2 | 2 | — |
| Sinsheim, Elsenz baden_wuerttemberg | 2 | 0 | €45,000 n=1 |
| Unknown baden_wuerttemberg | 2 | 1 | — |
| Unknown nordrhein_westfalen | 2 | 1 | — |
| Unterföhring bayern | 2 | 0 | — |
| Weil der Stadt baden_wuerttemberg | 2 | 1 | €50,000 n=1 |
| Wiesbaden hessen | 2 | 0 | — |
| Wolfsburg niedersachsen | 2 | 2 | — |
Advertised data engineering salaries by tool
Median advertised salary for postings naming each tool, where at least three state a figure. A median over four postings is not a market rate, which is exactly why the count is beside it.
| Tool | Median from | Median to | Postings |
|---|---|---|---|
| BigQuery warehouse | €70,000 | €85,000 | 3 |
| Databricks platform | €70,000 | €85,000 | 5 |
| Docker platform | €70,000 | €85,000 | 4 |
| Kafka streaming | €70,000 | €85,000 | 7 |
| Kubernetes platform | €70,000 | €85,000 | 7 |
| Terraform platform | €70,000 | €85,000 | 3 |
| Data Warehouse concept | €70,000 | €85,000 | 11 |
| Snowflake warehouse | €66,000 | €80,000 | 11 |
| Airflow orchestration | €65,000 | €85,000 | 7 |
| Azure cloud | €65,000 | €85,000 | 20 |
| ETL / ELT concept | €65,000 | €80,000 | 31 |
| Microsoft Fabric platform | €65,000 | €85,000 | 5 |
| Python language | €65,000 | €80,000 | 27 |
| SAP platform | €65,000 | €77,500 | 8 |
| Spark processing | €65,000 | €80,000 | 12 |
| SQL language | €65,000 | €80,000 | 27 |
| Java language | €64,000 | €82,500 | 6 |
| AWS cloud | €62,500 | €82,500 | 12 |
| dbt transformation | €62,500 | €80,000 | 10 |
| Google Cloud cloud | €62,500 | €82,500 | 6 |
| Data Lake / Lakehouse concept | €60,000 | €80,000 | 13 |
| PostgreSQL database | €60,000 | €85,000 | 3 |
| SQL Server database | €60,000 | €82,000 | 8 |
| Power BI bi | €55,000 | €78,000 | 11 |
| Tableau bi | €50,000 | €78,000 | 5 |
How this is measured
- Source
- The Bundesagentur für Arbeit's public job API — Germany's official federal job database — and the Arbeitnow board. Both are public APIs. Nothing here is scraped.
- Scope
- Data engineering, analytics engineering, BI and data analyst roles advertised in Germany. A posting enters only where Germany is established: stated by the source, or resolved from the location text against place names the federal database itself reports. Unknown stays out rather than being assumed German.
- Denominator
- 699 postings carried a description long enough to read requirements from. Every percentage on this page is a share of that number, never of all postings ever seen. A posting counts while the sources are still listing it — for 7 days after it was last seen, so a filled vacancy leaves these figures rather than inflating them forever.
- Deduplication
- The same vacancy is routinely syndicated to several boards, so postings are collapsed on employer and title. The key is approximate: an employer advertising two genuinely different roles under one title is merged into one.
- What moves these numbers
- Each run is a fresh sample of what is advertised that morning, so the figures move both because the market moves and because the sample does. Read a one-day change as noise; read a direction over weeks.
- Open
- The pipeline, the models, the tests and every daily snapshot are public at github.com/atakrk/de-jobs-pipeline. Any figure here traces back to the run that produced it.