European Tech Opportunities 2027
Documentation · Latest opportunities · Explore the directory →
Last successful collection: November 4, 2026 at 14:09 UTC
Why this?¶
Finding the right early-career tech role in Europe shouldn't mean digging through hundreds of scattered, outdated, or irrelevant listings.
European Tech Opportunities 2027 brings tech internships and New Grad roles (graduate and entry-level positions) across Europe into one searchable directory for the 2027 hiring cycle. Listings are checked against the project's eligibility rules. Collection is scheduled every three days. Maintainers run additional updates when many new roles appear or there are notable developments in the hiring market. Directory updates reach production after review and validation.
Find a company you like, pick a country, explore a category, or see what's been added recently. Share any search with a link. No installation needed. No account needed. Save roles, mark where you've applied, hide the ones that aren't for you, and see what's new since your last visit. Your lists stay in your browser, with no device sync. Marking a role applied is a reminder; it does not submit an application.
Need the data outside the website? Download the complete open directory as CSV or JSON, or query it through the free, read-only public API.
See the directory in action¶
https://github.com/user-attachments/assets/c55e9172-0b2b-4dde-92b8-84428f72cdce
Watch the video · Transcript · Static overview
What started as a small open-source project has reached people across Europe and beyond. An earlier aggregate traffic snapshot recorded 39K+ page views, 8.4K+ users, and 15.4K+ visits from more than 70 countries, with people discovering the project through 25+ different sources, including Google, GitHub, ChatGPT, DuckDuckGo, Claude, Perplexity, Instagram, Telegram, and Facebook.
Latest opportunities¶
Open opportunities: 759 (Internships: 386 · New Grad: 373)
Last successful collection: November 4, 2026 at 14:09 UTC
Browse and filter the complete directory at https://techopportunities.eu/.
Latest New Grad opportunities¶
Showing 5 of 373 open New Grad opportunities, newest first by first-seen time:
| Company | Title | Location | Listing |
|---|---|---|---|
| Arm | Graduate ML Software Engineer | Galway, County Galway, Ireland | View |
| Toyota Motor Europe | Software Quality Engineering Graduate | Evere, Brussels Region, Belgium | View |
| Bending Spoons | Graduate data scientist | Poland | View |
| Bending Spoons | Graduate data scientist | Warsaw, Mazowieckie, Poland | View |
| Bending Spoons | Graduate security engineer | Granada, Andalusia, Spain | View |
Latest internships¶
Showing 5 of 386 open internships, newest first by first-seen time:
| Company | Title | Location | Listing |
|---|---|---|---|
| Qube Research & Technologies | 2027 - Internship, Software Engineering and Quantitative Development | London; Paris; Wrocław; Zurich; Dubai | View |
| Ericsson | Data Scientist Intern | Madrid, Community of Madrid, Spain | View |
| Doctolib | Machine Learning Engineer Intern (x/f/m) | Paris, Île-de-France, France | View |
| Intel | DevOps Software Engineering Intern | Gdańsk, Pomorskie, Poland | View |
| Titan OS | Infrastructure Intern | Barcelona, Catalonia, Spain | View |
Missing a relevant role? Suggest a listing. Suggestions are reviewed before publication.
Use the data¶
Spreadsheets, side projects, or your favorite feed reader — take the listings with you. No account needed.
| Access | Best for | What you get |
|---|---|---|
| Live directory | Browsing and sharing | Search, filters, sorting, pagination, local lists, and original-listing links |
| CSV | Spreadsheets | Complete open dataset with spreadsheet-safe text |
| JSON | Scripts and analysis | Complete open dataset as one array |
| Public API | Applications and integrations | Filtered, sorted, paginated JSON, with caching support |
| RSS / Atom | Feed readers | Up to 50 recent open roles, with optional type, country, and category filters |
Downloads include all open listings, not just your current search. The read-only API needs no key and lets you filter, sort, and page through results.
Get started with the download guide, API guide, or feed subscriptions.
Precision over coverage¶
If the evidence isn't clear, we leave the role out rather than guess. A listing disappearing from search results doesn't automatically mean it's closed, either.
| Check | What we look for |
|---|---|
| Employment type | The title explicitly identifies an Internship or New Grad role |
| Seniority | Senior and management terminology is excluded |
| Technology | The role matches a configured technology category |
| Cycle / posting date | It clearly identifies the 2027 hiring cycle, or has no conflicting hiring cycle and eligible evidence of posting on or after May 1, 2026 |
| European location | The listing contains clear European location evidence |
Curious about the details? Here are the classification rules.
How it works¶
- Find public listings within fixed request limits.
- Check the role, seniority, hiring cycle, posting date, and European location.
- Store accepted listings and their history in SQLite, the project's database.
- Present open roles through the website, API, feeds, downloads, and README preview. These views only read the data; they do not change job status or decide which roles qualify.
Collection requires express authorization and stays within fixed request limits. No LinkedIn logins, private APIs, or anti-bot bypasses. Want to look under the hood? Start with the architecture guide and security policy.
Engineering¶
An open-source project behind a simple directory. Here's the stack:
| Area | Implementation |
|---|---|
| Collection & classification | Python 3.12+, bounded asynchronous collection, normalization, deterministic acceptance/rejection |
| Persistence | SQLite canonical lifecycle state, SQLAlchemy repository layer, Alembic migrations |
| Web application | Next.js, React, strict TypeScript, Tailwind, read-only node:sqlite access |
| Public data | Versioned API, deterministic CSV/JSON exports, JSON Schema, SHA-256 dataset metadata |
| Testing | Pytest unit/integration suites, Playwright browser journeys, axe accessibility checks, property tests, Lighthouse, parser/classifier benchmarks |
| Security & CI | GitHub Actions, CodeQL, Gitleaks, Dependency Review, OpenSSF Scorecard, container and documentation validation |
Offline tests check listing eligibility, safe lifecycle updates, browser-list privacy, accessibility, downloads, and recovery. See the testing guide for coverage, commands, and known limitations.
Privacy by design¶
No accounts, résumé uploads, or server-side application profiles. Your saved, applied, and hidden roles, along with your previous-visit time, stay in your browser — never in the public API or downloads.
The live site uses aggregate analytics, but your local lists and visit timestamps aren't sent with them. Read the privacy notice for the details.
Documentation¶
Need a hand, or want to help build the project? Start here:
| I want to… | Start here |
|---|---|
| Browse, filter, share, or troubleshoot the directory | User guides |
| Download or query the dataset | Data guides |
| Understand architecture, classification, testing, or the website | Maintainer handbook |
| Explore the full documentation map | Documentation home |
| Search the rendered docs | docs.techopportunities.eu |
Contributing¶
Found a bug, have an idea, or want to make the directory easier to use? Contributions are welcome — code, tests, accessibility fixes, and clearer docs all help.
Start with the contribution guide. You can develop and test offline; live source access still needs express authorization.
Report vulnerabilities privately through the security policy, not a public issue. Be kind and follow the Code of Conduct.
License¶
Code and docs are MIT licensed. External listings and third-party media keep their own terms. The promotional film uses “Minimal Corporate Atmosphere” by RoyaltyFreeMusicStudio under the Pixabay Content License, not MIT. See the third-party media notice for permissions and optional attribution; the original MP3 is not distributed.
Contributors¶
A huge thank you to everyone who has contributed to the project!