Tecnoempleo Jobs Scraper: Spain IT Jobs + Only New
Pricing
from $0.05 / 1,000 job results
Tecnoempleo Jobs Scraper: Spain IT Jobs + Only New
$0.1/1K jobs | Extract Spanish IT and developer jobs from Tecnoempleo in bulk with the full description, company, city, work type and date. Filter by search words, location, work arrangement and posting age. No login or API key. Not affiliated with Tecnoempleo.
Pricing
from $0.05 / 1,000 job results
Rating
0.0
(0)
Developer
Nomad.Devs
Maintained by CommunityActor stats
0
Bookmarked
10
Total users
4
Monthly active users
2 days ago
Last modified
Categories
Share
Tecnoempleo Jobs Scraper (No Login) + Full Descriptions
$0.1/1K jobs | Extract Spanish IT and developer jobs from Tecnoempleo in bulk with the full description, company, city, work type and date. Filter by search words, location, work arrangement and posting age. No login or API key. Not affiliated with Tecnoempleo.
Tecnoempleo IT Jobs Bulk Scraper
Our scraper collects current IT and developer jobs from Tecnoempleo, one of Spain's specialist tech job boards, and lets you filter by search words, location, work arrangement, employment type and posting age. Every row carries the complete original description in text and HTML, so you never have to open the posting to read it. It is ideal for Spanish tech-job alerts, developer sourcing, hiring-market analytics and job boards.
- Want Tecnoempleo together with LinkedIn, NoFluffJobs, InfoJobs, Hacker News and more developer boards in one run? Use Web Developer Jobs Scraper (No Login) + 12 Boards.
- Need every kind of Spanish job, not only IT? InfoJobs Spain Jobs Scraper (No Login) + Full Descriptions covers InfoJobs and returns repeat-free results across runs; this Actor does not suppress repeats.
- Searching across Europe? Europe Jobs Scraper (No Login) + 14 Boards includes Tecnoempleo.
- Want Polish tech jobs? JustJoin.it Jobs Scraper (No Login) + Full Descriptions.
- Want InfoJobs, Tecnoempleo, NoFluffJobs, Hacker News, Foorilla and 16 more boards in one run? Use All Jobs Scraper (No Login) + 21 Boards in One.
- Browse all our job-board scrapers: https://apify.com/nomad-agent
Key Benefits
- No login or API key: nothing to connect, no cookies and no proxies to configure.
- Low pricing: $0.10 per 1,000 jobs, with lower rates on Scale and Business plans ($0.075 and $0.05 per 1,000), plus a $0.00005 start fee per run.
- Full descriptions only: a posting is kept only once its complete description has been read, so no row is a teaser.
- Fresh data: the postings come from a store refreshed from Tecnoempleo every hour, newest first.
- Beyond the RSS feed: Tecnoempleo's own feed stops at about 80 items, while this Actor reads the stored catalogue.
- Work type and employment type in the row: work type was filled on 8 of 10 postings and employment type on 6 of 10 in our test run.
How It Works
- Provide your search. Every filter is optional:
- (optional) Search queries (e.g.,
python,java,devops). A posting matches when its title or description contains every word of a query, as whole words, ignoring case; it matches when any query matches. - (optional) Locations (e.g.,
Madrid,Barcelona,ES). City, region, country name or ISO code, matched without regard to accents or case against each posting's location. - (optional) Work arrangement:
remote(100%),hybridoronsite. A posting that states no arrangement is left out when you choose one. - (optional) Employment type:
Full-time,Part-time,ContractorInternship. A posting that states none is left out when you choose one. - (optional) Posted within (e.g.,
24h,3d,2w). Default isany.
- (optional) Search queries (e.g.,
- Set how many jobs you want with
maxItems. - Click Start. The form opens with
pythonand 20 jobs, so a first run returns real rows in seconds (our test run took about 6 seconds).
Run the same search again and you get only postings you have not received yet; set dedupe.enabled to false to see everything again.
More settings:
maxItems- Maximum postings to return, newest first. Default is 80;0means no limit.- Old inputs still run:
keyword,provinceandremoteare mapped ontoqueries,locationsandlocationTypes.category,titleExcludeandcompanyExcludeare no longer supported and are ignored; the run'sRUN-SUMMARYlists what was mapped or ignored underinput.notes. Filter by title or company in your own code: rows carrytitleandcompany.
This Actor has no repeat-delivery suppression. A scheduled run returns the newest jobs again every time, so set postedWithin (for example 24h) to the length of your schedule to receive mostly new postings.
Salary is filled only when the employer publishes it: 1 of 10 postings in our test run. Leave the salary out of any filter you build on top of this data.
Data You'll Receive
- Job details: title, complete description (text and HTML), city, posting date.
- Company: employer name.
- Terms: work type and employment type when the posting states them, salary text (for example
80000-90000 EUR/year) when the employer publishes it; unknown facts arenull. - Links and identity: the Tecnoempleo URL, plus a stable
idandsourcefor deduplication. - Hiring contacts: the field exists in every row; Tecnoempleo lists none, so it is an empty list.
Sample output data
Here is an example job from this Actor (long text shortened for display):
{"schemaVersion": "nomad-agent-job-row-v4","source": "tecnoempleo","id": "rf-0b30184732af33460545","url": "https://www.tecnoempleo.com/ai-implementation-lead-michael-page/ia-generativa-llms/rf-0b30184732af33460545","title": "AI Implementation Lead","company": "Michael Page","locations": ["Sevilla"],"applicantLocations": null,"postedAt": "2026-10-09","deadline": null,"description": "Perfil buscado\n\n• Diseñar y desarrollar la arquitectura de IA corporativa que centralizará y estructurará el conocimiento de la organización.\n• Liderar la definición técnica y ejecución de las primeras iniciativas de alto impacto, identificando oportunidades r… [truncated for display]","descriptionHtml": "\r\n\t\t\t\t\t\tPerfil buscado\r<br/>\r<br/>• Diseñar y desarrollar la arquitectura de IA corporativa que centralizará y estructurará el conocimiento de la organización.\r<br/>• Liderar la definición técnica y ejecución de las primeras iniciativas de alto impacto, identi… [truncated for display]","workType": "hybrid","salary": "80000-90000 EUR/year","employmentTypes": ["Full-time"],"hiringContacts": []}
Tecnoempleo Jobs API
Results are stored in a dataset that you can export as CSV, JSON or Excel, or read through the Apify API. Schedule it, or connect it to Make, n8n, Zapier or an MCP client to push new jobs wherever you need them. Each run also writes a RUN-SUMMARY record to its key-value store with the run status (such as succeeded, partial, empty or failed) and its crawl, detail and output counters.
Support and Feedback
We improve these scrapers from your feedback. If something breaks or you need a filter:
- Open an issue on the Actor's Issues tab.
- If this Actor saved you time, a short review on the Store helps other people find it.
Run evidence
Start with one input and output
An Apify account is required. Use your Apify API token when calling the API; Console runs do not need that token pasted into the input. No user API-key field is required by this input schema.
Free-tier event rates checked 2026-10-04: actor-start $0.00005; result $0.0001.
Cost: Total = Actor event charges + platform usage if separately billed + any BYO-provider charges. See “Current costs” for your event rates, plan tiers and a calculation. A sample does not promise future billable volume.
Input and output below were read from the same successful run Obgf0UMTCMjzb380K (2026-10-03, immutable build WsqKCJYE0HnjAYMu6). This is an observed example, not a guarantee that repeating it returns this row.
Input JSON
{"remote": "any","includeDescription": true,"titleExclude": [],"companyExclude": [],"postedWithin": "any","maxItems": 80,"cacheTtlSeconds": 1800}
Matching output excerpt
Long strings and arrays are shortened for display; this is not a complete dataset fixture.
{"schemaVersion": "nomad-agent-job-row-v3","source": "tecnoempleo","id": "rf-05fe1b9ab2d4730c014d","url": "https://www.tecnoempleo.com/net-developer-electronic-trading-cas-training/net-core-aspnet/rf-05fe1b9ab2d4730c014d","title": ".NET Developer – Electronic Trading","company": "CAS TRAINING","locations": ["Madrid"],"postedAt": "2026-10-03","deadline": null,"description": "Senior .NET Developer – Electronic Trading\n📍 Modalidad: 100% remoto\n💰 Tarifa máxima: 38000 a 42000 mil brutos anuales\n🌐 Inglés: Nivel avanzado imprescindible\n¿Eres Senior .NET Developer y te apetece trabajar en un proyecto greenfield, con arquitectura moderna y dentro de un entorno de Electronic Trading?\nEstamos incorporando 4 Senior Developers para particip… [truncated for display]","descriptionHtml": "\r\n\t\t\t\t\t\tSenior .NET Developer – Electronic Trading<br/>📍 Modalidad: 100% remoto<br/>💰 Tarifa máxima: 38000 a 42000 mil brutos anuales<br/>🌐 Inglés: Nivel avanzado imprescindible<br/><br/><br/>¿Eres Senior .NET Developer y te apetece trabajar en un proyecto greenfield, con arquitectura moderna y dentro de un entorno de Electronic Trading?<br/><br/>Estamos inc… [truncated for display]","workType": "remote","salary": "33000-42000 EUR/year","employmentTypes": ["Full-time"],"hiringContacts": []}
Scrape current IT and developer vacancies from Tecnoempleo.com, Spain's dedicated tech job board.
Claude / Codex skill to describe and setup this actor: SKILL.md
Tecnoempleo is one of Spain's largest specialist IT job boards, carrying developer, DevOps, data, QA and technical-management roles from Spanish employers and consultancies. This Actor returns its vacancies — thousands of them, far beyond the ~80-item cap of the site's RSS feed — as clean, deduplicated JSON, so you can filter Spanish tech empleo by search words, location, work arrangement and employment type and pipe it straight into your own tools. No login, no proxies.
Postings come from a store we refresh from Tecnoempleo every hour. Each one is kept only once its complete description has been read from the posting page, so every row carries the full text, never a teaser. If the store is briefly unavailable, the run returns no rows and its RUN-SUMMARY record says so; you are billed only the start.
What Tecnoempleo data does this scraper extract?
Published postings follow nomad-agent-job-row-v4: 16 fields carrying source
identity, title and company, the city, the regions an applicant may live in, dates, the complete plain-text body and
the source's markup, work type, salary, employment types and hiring contacts.
Unavailable scalar facts are null; no physical location is []. There is no
recordType, no custom object and no extra columns. See the Output example
section for every field.
How to scrape Tecnoempleo with this Actor
- Click Try for free / Run — no login to the target site, no cookies, no proxies to configure.
- Adjust the input (
queries,locations,locationTypes,employmentTypes,maxItems) or keep the defaults. - Run it and export the dataset as JSON, CSV or Excel, or read it over the API.
Run it from your own code:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("nomad-agent/tecnoempleo-scraper").call(run_input={"maxItems": 50})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], "—", item["company"], item["url"])
Or a single HTTP call that runs the Actor and returns items in one response:
curl -X POST \"https://api.apify.com/v2/acts/nomad-agent~tecnoempleo-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"maxItems": 50}'
Input
| Field | Type | Default | Notes |
|---|---|---|---|
queries | array | [] | Match postings whose title or description contains every word of a query, as whole words, ignoring case. A posting matches when any query matches. Empty: no filter. |
locations | array | [] | City, region, country name or two-letter ISO country code, matched accent- and case-insensitively. EU and Europe expand to their countries. Empty: no filter. |
locationTypes | array | [] | remote, hybrid or onsite. A posting whose page states no arrangement is left out when this is set. Empty: no filter. |
employmentTypes | array | [] | Full-time, Part-time, Contract or Internship. A posting that states none is left out when this is set. Empty: no filter. |
postedWithin | string | any | Keep only jobs published inside this window. Use any for no date filter, or a duration — 1h, 24h, 3d, 2w, 6m. Jobs the source published no date for are kept rather than dropped. Based on the posting date shown by Tecnoempleo. Replaces postedSince, still accepted for existing integrations. |
maxItems | integer | 80 | Maximum postings to return, newest first. The store holds the whole live catalogue, well beyond the RSS feed's ~80-item cap. Set 0 for no limit. |
Output example
Every row follows nomad-agent-job-row-v4, the one shape shared by this
fleet's job Actors. A row carries every field; null means the source did not
publish that fact, and locations: [] means the posting names no physical place;
applicantLocations (where an applicant may live) is null when the posting states none, which is always the case for Tecnoempleo. Nothing is guessed.
{"schemaVersion": "nomad-agent-job-row-v4","source": "tecnoempleo","id": "rf-07d4125d3256f330754d","url": "https://www.tecnoempleo.com/programadores-junior-senior-java-seltime/springboot-angular/rf-07d4125d3256f330754d","title": "Programadores junior/senior Java","company": "Seltime","locations": ["Madrid"],"applicantLocations": null,"postedAt": "2026-09-18","deadline": null,"description": "The complete posting body as plain text, exactly as the source published it — never truncated.","descriptionHtml": "<p>The complete posting body as the source's own markup.</p>","workType": null,"salary": "21000-33000 EUR/year","employmentTypes": ["Full-time"],"hiringContacts": []}
| Field | Meaning |
|---|---|
schemaVersion | Always "nomad-agent-job-row-v4". |
source | Always "tecnoempleo". Together with id it identifies the posting. |
id | Tecnoempleo's own posting id, rf- plus 20 hex characters. Stable across runs and unchanged from earlier versions of this Actor. |
url | Canonical public URL of the posting on Tecnoempleo. |
title | Job title exactly as published. |
company | Employer name as published; null when the posting names none. |
locations | The posting's city, e.g. ["Madrid"]. [] when the page published no city (a fully remote posting without one). Work arrangement is never a place; it is in workType. |
applicantLocations | Regions where the posting says an applicant may live; null when it states none (Tecnoempleo states none today), [] when it states no restriction. Never merged into locations. |
postedAt | The posting date as the source publishes it, normally a calendar date (YYYY-MM-DD); null when the source published none. |
deadline | Application deadline when the posting states one (rare), else null. |
description | The complete posting body as plain text — never truncated, never summarised. |
descriptionHtml | The posting body as the source's own markup. |
workType | remote, hybrid or onsite when the page states exactly one arrangement, else null. Never defaulted. |
salary | The salary the employer published, as text: the stored range written out with its currency and period (21000-33000 EUR/year, 900-1200 EUR/month; one number when both bounds are equal, min …/max … when only one is published). null when no salary is published. These are the published numbers only, not a net/gross judgement. |
employmentTypes | Full-time, Part-time, Contract and/or Internship as stated by the posting, else null. |
hiringContacts | Named people the posting lists as contacts; [] when none (Tecnoempleo lists none today). |
A run that matches nothing, or whose store is briefly unavailable, returns an
empty dataset: a dataset row is always a posting. The run's RUN-SUMMARY
record (key-value store) says whether it was empty or degraded.
Integrations
Export results as JSON, CSV or Excel; connect via Make, Zapier or n8n; call directly with run-sync-get-dataset-items; or plug into AI agents through the Apify MCP server.
Pricing
Check this Actor’s Pricing tab for the current charges for your Apify plan.
Pay per event, with actor-start and job-result events. You are not billed for results that were not returned; no subscription is required.
Use cases
- Spanish tech-job boards and alert bots
- Sourcing developers in Spain
- Tracking which companies are actively hiring IT talent in Spain
- Filtering the live feed for specific tech keywords via the
queriesinput
FAQ
Is it legal to scrape Tecnoempleo? This Actor reads only publicly available job postings — data any visitor can see without logging in. No personal data behind authentication is touched. Review the target site's terms and your local regulations for your specific use case.
Do I need an account on the target site? No. Postings are fetched from public pages/APIs — no login, cookies or session tokens.
How fresh is the data? The store is refreshed from Tecnoempleo every hour, and a posting appears once its full description has been read. Results are newest first.
How many jobs can I get?
maxItems caps the run (set 0 where supported for no cap). Most sources paginate from newest to oldest.
Which roles does Tecnoempleo cover? Primarily IT and engineering — backend/frontend developers, DevOps, data, QA, IT support and technical management — mostly across Spain, with a growing share of remote-friendly listings.
Can I get only remote jobs?
Set locationTypes to ["remote"] (100% en remoto), hybrid or onsite. You can also filter by locations, or read the parsed locations array in each posting.
Can I get salaries and full descriptions?
Every posting carries its complete description; there is nothing to enable. salary is text such as 27000-30000 EUR/year, filled only when the employer discloses pay (about one posting in six).
Something broken or missing? Open an issue on the Actor's Issues tab — it is monitored and reliability fixes ship fast.
Getting fewer results than you expected?
A run that matches nothing returns an empty dataset (its RUN-SUMMARY says why). Relax queries, locations, locationTypes, employmentTypes or postedWithin and re-run. A filter on arrangement or employment type leaves out postings that state none.
Changes
-
October 2026:
applicantLocationsadded (row v4). Rows are nownomad-agent-job-row-v4: one new field,applicantLocations, lists where an applicant may live as the source states it (nullwhen the source states nothing,[]when it states no restriction).locationsis unchanged and still the physical place only; for a remote job open to some regions it is often[]whileapplicantLocationslists the regions. Input, other fields and pricing are unchanged. Integrations that validate rows against the v3 schema must allow the new field and the newschemaVersion. -
October 2026 — shared search filters (breaking input change). The input is now the one filter set every job Actor uses:
queries,locations,locationTypes,employmentTypes, pluspostedWithinandmaxItems. Removed from the form:keyword,province,remote,category,titleExclude,companyExclude,includeDescriptionandcacheTtlSeconds. Old API calls still run:keyword,provinceandremoteare mapped,category,titleExcludeandcompanyExcludeare ignored, andRUN-SUMMARYsays so underinput.noteswhen they carried a value.includeDescriptionandcacheTtlSecondsnever changed anything and are not reported (exceptincludeDescription: false, a request that is not honoured). Matching differs:queriesmatch whole words in the title and description, wherekeywordalso matched the company and technology tags as substrings. There is no title, company or category filter any more. Output rows are unchanged. -
October 2026 — new row format (breaking). Rows are now
nomad-agent-job-row-v3(15 fields) instead ofnomad-agent-job-row-v1. Removed:recordType(a dataset row is always a posting; the diagnostic row is gone,RUN-SUMMARYreports empty and degraded runs),customand the deprecated aliasescategory,location(nowlocations),salaryMin,salaryMax,salaryCurrency,salaryPeriod(now onesalarytext),snippet(usedescription) andtechnologies. Added:employmentTypes,hiringContacts, andworkTypefilled from the posting's stated arrangement.idkeeps itsrf-form, so integrations keyed on(source, id)are unaffected. Input, pricing and the keyword/province/category/remote filters are unchanged (keywordandcategorystill match the posting's technology tags and categories). -
2026-09 — postings come from a store refreshed hourly. Inputs and output fields are unchanged. Runs no longer crawl Tecnoempleo themselves, so they are faster and every row carries the complete description.
technologiesnow lists all of a posting's tags, not just the first three the listing card shows, andcategorycomes from the posting page.descriptionHtmlis filled with the posting's own markup.includeDescriptionandcacheTtlSecondsare accepted and no longer change anything.
Found it useful?
Leave a rating on the Reviews tab — it takes ten seconds, and it is the single biggest thing that helps other people in Spain's tech-hiring niche find this Actor.
Related Actors
- Web Developer Jobs Scraper (No Login) + 12 Boards
- InfoJobs Spain Jobs Scraper (No Login) + Full Descriptions — complete descriptions and source-supplied salary text
- JustJoin.it Jobs Scraper (No Login) + Full Descriptions
From the maker of Oink — an open-source, AI-powered job-search bot for Telegram that runs on these Actors. Try the free bot, get a managed instance at oinkjobsearch.com, or browse the full catalog of 50+ Actors.
Fast setup and source code
Public repository · Agent setup skill.
Use the Actor’s current input form for filters, or start with its documented API example. Select the latest build. Read the dataset together with the run summary: a successful status alone does not show that every source was reached.
Restrictive filters or repeat-delivery suppression can produce zero results.
Observed output example
Selected fields from a real source record inspected on 2026-10-03; consult the output schema for the full contract. Values change with the source.
{"schemaVersion": "nomad-agent-job-row-v3","source": "tecnoempleo","id": "rf-000111fd524293cc894f","url": "https://www.tecnoempleo.com/programador-sap-abap-evolutivos-serem/sap/rf-000111fd524293cc894f","title": "Programador SAP ABAP - Evolutivos","company": "Serem","locations": ["Madrid"],"postedAt": "2026-10-02","deadline": null,"description": "Buscamos un Programador SAP ABAP con alrededor de 4 años de experiencia para incorporarse a un equipo especializado en mantenimiento y evolución de soluciones SAP.\nLa posición estará orientada al desarrollo de evolutivos y mejoras sobre sistemas críticos de negocio, participando también en el análisis, implantación y resolución de incidencias.\nFunciones principales\n- Desarrollo y mantenimiento de programas en SAP ABAP.\n- Análisis y desarrollo de evolutivos sobre soluciones SAP.\n- Participación en la implantación de mejoras.\n- Resolución de incidencias y soporte sobre las soluciones existentes.\n- Mantenimiento evolutivo y correctivo de aplicaciones SAP.\n- Colaboración con el equipo en la mejora continua de los sistemas.\nRequisitos\n- Al menos 4 años de experiencia en desarrollo SAP ABAP.\n- Experiencia en proyectos de mantenimiento y desarrollo de evolutivos.\n- Experiencia en desarrollo y mantenimiento de programas SAP ABAP.\n- Capacidad de análisis y resolución de incidencias.\nCondiciones\n- Perfil: Programador SAP ABAP.\n- Especialización: Desarrollo y evolutivos.\n- Tecnología: SAP ABAP.\n- Experiencia: +4 años.","workType": null,"salary": null,"employmentTypes": ["Full-time"],"hiringContacts": []}
Product guides and related tools
- Guide and starter input on nomadagent.dev
- Product overview and public links
- Public setup guide
- Job Atlas job-data tools
- Oink personal job alerts
- How to filter remote jobs by real location eligibility
Current costs
Current Actor event rates, checked 2026-10-16. USD; use the Pricing tab for your plan and later changes.
| Event | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
Actor start (actor-start) | $0.00005 | $0.00005 | $0.00005 | $0.00005 | $0.00005 | $0.00005 |
Job result (result) | $0.0001 | $0.0001 | $0.000075 | $0.00005 | $0.00005 | $0.00005 |
For example, 1 × actor-start, 100 × result totals $0.01005 in Actor event charges on Free. This is an arithmetic example, before any waiver; actual charged events depend on the run and selected options. It is not a promise of output or a charge for simply setting an item cap.
Your total is the charged Actor events, plus platform usage only if this Actor’s Pricing tab bills it separately, plus any external provider you use with your own key. Do not add platform usage twice when it is included. Apify credits and plan discounts affect your invoice. Set a run cost limit in Console before starting.
Independent tool. We built and run this Actor ourselves. It is not affiliated with or endorsed by Tecnoempleo, and the name is used only to say which site the data comes from.