# Levtech Freelance IT Project Scraper (`maximedupre/levtech`) Actor

Collect active public Levtech Freelance IT project listings with titles, JPY monthly rates, skills, work modes, locations, and source links. Set a limit or leave it empty to return all available projects until the source is exhausted.

- **URL**: https://apify.com/maximedupre/levtech.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Jobs, Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 60.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.90 / 1,000 project listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

### 📋 Collect Levtech Freelance project data

Recruiters, staffing teams, and labor-market researchers can collect active public Levtech Freelance project listings in a structured dataset. Each row includes the published title, source ID, source URL, rates, skills, role and industry labels, work mode, location, contract hours, weekly days, and publication date when available. Use the rows to compare rates, review skills and work arrangements, and build a current project list.

**Use cases**

- Collect active listings with titles, rates, and source links through [**Levtech Freelance Projects**](https://apify.com/maximedupre/levtech/examples/levtech-freelance-projects).
- Find current job postings with skills, locations, and work modes through [**Levtech Freelance Jobs**](https://apify.com/maximedupre/levtech/examples/levtech-freelance-jobs).
- Export project details for market research with [**Levtech Projects**](https://apify.com/maximedupre/levtech/examples/levtech-projects).
- Review current listings with contract and publication fields in [**Levtech Jobs**](https://apify.com/maximedupre/levtech/examples/levtech-jobs).
- Build a source-linked view of freelance work with [**Levtech Freelance**](https://apify.com/maximedupre/levtech/examples/levtech-freelance).

#### 📄 What each Levtech Freelance row contains

The Actor saves one row for each eligible active public source project. A row keeps the source project ID, title, canonical detail-page URL, published project details, and any available rate, skill, work arrangement, location, contract-hour, weekly-day, and publication-date fields. If the same source project is found again during the run, the later match is ignored. The saved row reflects the first match.

#### ▶️ Run a current Levtech Freelance collection

**How it works**

1. Open the Input tab and review Maximum projects.
2. Leave it empty to return all available active projects until the source is exhausted, or set a positive number to bound the run and output.
3. Run the Actor and open the linked dataset.

#### ⚙️ Input

The input form has one field.

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `maxItems` | integer | Sets the maximum number of active projects to return. Leave it empty to return all available active projects until the source is exhausted. |

**Example input**

This example is the public input from a successful current-beta run.

```json
{
  "maxItems": 20
}
```

#### 🧾 Output

The Actor provides a link to the run dataset. The dataset contains one project row shape.

**Dataset link**

| Field | Type | What it does |
| --- | --- | --- |
| `defaultDatasetUrl` | string | Link to the dataset of active public Levtech Freelance project records. |

**Project row**

| Field | Type | What it does |
| --- | --- | --- |
| `projectId` | string | Source identifier for the project. |
| `title` | string | Project title published by Levtech Freelance. |
| `url` | string | Canonical public detail-page URL for the project. |
| `monthlyRateMinJpy` | integer | Published lower monthly contract rate in JPY, when available. |
| `monthlyRateMaxJpy` | integer | Published upper monthly contract rate in JPY, when available. |
| `occupation` | string | Occupation published for the project, when available. |
| `industry` | string | Industry classification published for the project, when available. |
| `requiredSkills` | string\[] | Skills and technologies listed as required for the project, when available. |
| `workMode` | string | Published work mode, such as remote, on-site, or hybrid, when available. |
| `location` | string | Published project location, when available. |
| `contractHoursMin` | number | Lower bound of the published contract-hour range, when available. |
| `contractHoursMax` | number | Upper bound of the published contract-hour range, when available. |
| `contractHoursUnit` | string | Time unit shown by the source for the contract hours, when available. |
| `minimumWeeklyDays` | integer | Published minimum number of working days per week, when available. |
| `publicationDate` | string | Date when the project was published, when available. |

**Example project row**

This complete row is copied from the successful current-beta run. It shows the fields published for that project. Fields not present in the row were not available in that source listing.

```json
{
  "projectId": "101551",
  "title": "【サーバーサイドエンジニア】HR系ダイレクトスカウトサービス開発の求人・案件【Laravel/PHP】",
  "url": "https://freelance.levtech.jp/project/detail/101551/",
  "monthlyRateMaxJpy": 850000,
  "occupation": "サーバーサイドエンジニア",
  "industry": "人材･教育",
  "requiredSkills": [
    "Laravel, JavaScript, PHP, CSS, HTML, GitHub, Docker, MySQL, Vue.js, AWS, Nuxt.js",
    "WEBサービスの開発経験5年以上",
    "API、DB設計経験5年以上",
    "PHP実務経験3年以上",
    "Laravelを用いた実務経験2年以上",
    "Gitを利用したチームでの開発経験3年以上（コードレビュー）",
    "アジャイル開発の経験",
    "大規模サービスの開発、設計経験",
    "クリーンアーキテクチャなどを利用した開発経験",
    "大量データを用いた処理の設計、パフォーマンス改善",
    "Vue.js、Nuxt.jsを用いた開発経験",
    "Dockerを利用した開発経験",
    "小規模でのチームマネジメント、リーダー経験、リードエンジニア経験"
  ],
  "workMode": "remote",
  "location": "渋谷（東京都）/フルリモート",
  "contractHoursMin": 140,
  "contractHoursMax": 180,
  "contractHoursUnit": "時間",
  "minimumWeeklyDays": 5,
  "publicationDate": "2026-08-12"
}
```

#### 💳 Pricing

**How pricing works**

This Actor uses pay-per-event pricing. You are charged for each active project listing saved to your dataset. Set Maximum projects to bound the number of listings a run can save.

#### 🔌 Integrations

Use the dataset link with the Apify API or built-in export formats. For a walkthrough, see:

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### What happens when a project does not publish a rate or contract hours?

The matching field is absent when the source does not publish it. The Actor does not invent lower rates, hours, or other project details.

##### What does an empty Maximum projects value do?

It returns all available active projects until the source is exhausted. Set a positive number when you want a bounded run.

##### How are repeated project matches handled?

The Actor saves the first eligible occurrence of a source project. If it finds that same source project again during the run, it ignores the later match. The saved row reflects the first match.

##### Does the Actor collect closed or historical projects?

No. It is for active public Levtech Freelance projects. Closed or removed listings are outside its scope.

##### Can I collect projects from other job boards?

No. The Actor collects only the Levtech Freelance public project catalog.

##### Can it apply for a project or contact an employer?

No. It returns public project data only. It does not apply, contact employers, match candidates, or perform staffing actions.

##### What does one dataset row represent?

One row represents one active public project. It includes the source identity and the published details that are available for that project.

##### Can I use the dataset through the Apify API?

Yes. Use the dataset link in the Output section with the Apify API or Apify export tools.

### 📝 Changelog

**0.0: Initial release**

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~levtech/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [Freelancer Scraper](https://apify.com/maximedupre/freelancer-scraper): Find public freelance projects and freelancer profiles with budgets, skills, and rates.
- [Handshake Jobs Scraper](https://apify.com/maximedupre/handshake-jobs-scraper): Collect public jobs with employer, compensation, workplace, and date fields.
- [Welcome to the Jungle Jobs Scraper](https://apify.com/maximedupre/welcometothejungle-jobs-extractor): Search public job listings with locations, salaries, remote policy, and contract type.
- [CWjobs Scraper](https://apify.com/maximedupre/cwjobs-scraper): Track UK technology roles with employers, salaries, and workplace signals.
- [Revelo LATAM Nearshore Developer Catalog Scraper](https://apify.com/maximedupre/revelo): Compare public Latin America developer role pages and monthly compensation bands.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `maxItems` (type: `integer`):

Set the maximum number of active projects to return. Leave this empty to return all available active projects until the source is exhausted.

## Actor input object example

```json
{
  "maxItems": 20
}
```

# Actor output Schema

## `defaultDatasetUrl` (type: `string`):

Dataset of active public Levtech Freelance project records.

# 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 = {
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/levtech").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 = { "maxItems": 20 }

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/levtech").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "maxItems": 20
}' |
apify call maximedupre/levtech --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maximedupre/levtech"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/mZDMMHAtju1WMjWLg/builds/2WN9DpJb6f9mBgPGp/openapi.json
