# InfoJobs Spain Jobs, Salaries & Company Data (`muhammadafzal/infojobs-spain-jobs`) Actor

Search public InfoJobs Spain jobs and return titles, companies, locations, salaries, contracts, remote-work indicators, descriptions, requirements, publication dates, and company data for recruiting, salary benchmarking, labor research, and AI agents. Not for candidate profiles.

- **URL**: https://apify.com/muhammadafzal/infojobs-spain-jobs.md
- **Developed by:** [Muhammad Afzal](https://apify.com/muhammadafzal) (community)
- **Categories:** Jobs, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 infojobs job records

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## InfoJobs Spain Jobs · Salaries · Company Data · Search

Search public InfoJobs Spain listings and return structured jobs with salary, company, location, contract, remote-work, publication, description, and requirements data. Designed for recruiters, salary benchmarking, Spanish labor-market research, job boards, and AI agents.

### What this actor returns

One dataset record per unique job offer:

- job ID, title, canonical URL, and search query
- hiring company, company profile URL, logo, and rating data when exposed
- Spanish location, remote/hybrid status, contract type, and workday
- salary text plus parsed minimum and maximum amounts where available
- publication timestamp, description, requirements, scrape timestamp, and record status

Salary is only returned when InfoJobs displays it. The actor does not infer missing compensation. Company ratings and some company fields are also optional because InfoJobs may not expose them for every employer.

### Input

Use `searchQueries` for job keywords such as `software engineer`, and optionally `locations` such as `Madrid`, `Barcelona`, or `Valencia`. `startUrls` can be used when you already have InfoJobs search URLs. The default run searches for `software engineer` and returns up to 20 unique jobs.

Set `includeDetails` to `true` (default) to fetch each offer page for full enrichment. Set it to `false` for a faster search-card export. `maxPages` controls pagination per search and `maxRequestRetries` handles temporary HTTP failures.

### Examples

```json
{
  "searchQueries": ["data analyst", "software engineer"],
  "locations": ["Madrid", "Barcelona"],
  "maxResults": 50,
  "includeDetails": true
}
````

### Pricing

Suggested Store pricing: **$1 per 1,000 job records returned**. An agent should use this actor for public InfoJobs Spain job data, not candidate profiles, private employer data, or applications. Pricing is based on records returned; partial records include a diagnostic `error` field.

### API

```js
const run = await client.actor('USERNAME/infojobs-spain-jobs').call({
  searchQueries: ['devops engineer'], locations: ['Madrid'], maxResults: 25
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

### Data and responsible use

Use only publicly accessible pages and comply with InfoJobs terms, applicable law, and data-protection obligations. This actor does not bypass login, access controls, or private candidate information.

# Actor input Schema

## `searchQueries` (type: `array`):

Use this when searching InfoJobs for one or more job titles or keywords. Enter plain text such as software engineer. Defaults to software engineer; this is not a direct job URL.

## `locations` (type: `array`):

Use this when limiting results to Spanish cities or regions. Enter names such as Madrid or Barcelona. Defaults to all locations; this is not a country code.

## `startUrls` (type: `array`):

Use this when you already have InfoJobs search result URLs to crawl. Enter full https://www.infojobs.net/ofertas-trabajo/... URLs. Defaults to generated searches; this is not for job detail URLs.

## `maxResults` (type: `integer`):

Use this to cap the total number of unique jobs returned. Enter a number from 1 to 200. Defaults to 20; this is not a per-query limit.

## `maxPages` (type: `integer`):

Use this to control pagination for each search. Enter a number from 1 to 20. Defaults to 3; this is not the number of detail pages.

## `includeDetails` (type: `boolean`):

Use this to enrich each job with full description, requirements, salary, and company data. Defaults to true. Set false for faster card-only extraction; this is not a login option.

## `maxRequestRetries` (type: `integer`):

Use this to retry temporary InfoJobs request failures. Enter a number from 0 to 5. Defaults to 2; this is not a proxy count.

## Actor input object example

```json
{
  "searchQueries": [
    "software engineer"
  ],
  "locations": [],
  "startUrls": [],
  "maxResults": 20,
  "maxPages": 3,
  "includeDetails": true,
  "maxRequestRetries": 2
}
```

# Actor output Schema

## `datasetItems` (type: `string`):

Structured InfoJobs Spain job records returned by the actor.

## `summary` (type: `string`):

Counts and settings for the completed run.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("muhammadafzal/infojobs-spain-jobs").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("muhammadafzal/infojobs-spain-jobs").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call muhammadafzal/infojobs-spain-jobs --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=muhammadafzal/infojobs-spain-jobs",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "InfoJobs Spain Jobs, Salaries & Company Data",
        "description": "Search public InfoJobs Spain jobs and return titles, companies, locations, salaries, contracts, remote-work indicators, descriptions, requirements, publication dates, and company data for recruiting, salary benchmarking, labor research, and AI agents. Not for candidate profiles.",
        "version": "1.0",
        "x-build-id": "AEYrDmHQPesmVeM38"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/muhammadafzal~infojobs-spain-jobs/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-muhammadafzal-infojobs-spain-jobs",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/muhammadafzal~infojobs-spain-jobs/runs": {
            "post": {
                "operationId": "runs-sync-muhammadafzal-infojobs-spain-jobs",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/muhammadafzal~infojobs-spain-jobs/run-sync": {
            "post": {
                "operationId": "run-sync-muhammadafzal-infojobs-spain-jobs",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchQueries": {
                        "title": "Job search queries",
                        "type": "array",
                        "description": "Use this when searching InfoJobs for one or more job titles or keywords. Enter plain text such as software engineer. Defaults to software engineer; this is not a direct job URL.",
                        "items": {
                            "type": "string",
                            "minLength": 1
                        },
                        "default": [
                            "software engineer"
                        ]
                    },
                    "locations": {
                        "title": "Spain locations",
                        "type": "array",
                        "description": "Use this when limiting results to Spanish cities or regions. Enter names such as Madrid or Barcelona. Defaults to all locations; this is not a country code.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "startUrls": {
                        "title": "InfoJobs search URLs",
                        "type": "array",
                        "description": "Use this when you already have InfoJobs search result URLs to crawl. Enter full https://www.infojobs.net/ofertas-trabajo/... URLs. Defaults to generated searches; this is not for job detail URLs.",
                        "items": {
                            "type": "string",
                            "pattern": "^https://(www\\.)?infojobs\\.net/"
                        },
                        "default": []
                    },
                    "maxResults": {
                        "title": "Maximum results",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Use this to cap the total number of unique jobs returned. Enter a number from 1 to 200. Defaults to 20; this is not a per-query limit.",
                        "default": 20
                    },
                    "maxPages": {
                        "title": "Maximum search pages",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Use this to control pagination for each search. Enter a number from 1 to 20. Defaults to 3; this is not the number of detail pages.",
                        "default": 3
                    },
                    "includeDetails": {
                        "title": "Fetch detail pages",
                        "type": "boolean",
                        "description": "Use this to enrich each job with full description, requirements, salary, and company data. Defaults to true. Set false for faster card-only extraction; this is not a login option.",
                        "default": true
                    },
                    "maxRequestRetries": {
                        "title": "Request retries",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Use this to retry temporary InfoJobs request failures. Enter a number from 0 to 5. Defaults to 2; this is not a proxy count.",
                        "default": 2
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
