# Upwork freelancers monitor: weekly, only the new profiles

**Use case:** 

A weekly watch on the Python developers the census holds (change the query and the filters and run). The first run delivers every matching profile; each later run delivers only the freelancers it has not delivered before, remembered on our side, so no profile is sent or charged twice. A skipped profile costs nothing, and the run's status line says how many were skipped.

## Input

```json
{
  "query": "python developer",
  "includePrivate": false,
  "fullProfiles": false,
  "liveSearch": false,
  "maxPages": 10,
  "maxAgeDays": 30,
  "includeStale": false,
  "onlyNew": true,
  "stateStoreName": "",
  "sort": "relevance",
  "maxItems": 50
}
```

## Output

```json
{
  "ciphertext": {
    "label": "Ciphertext",
    "format": "string"
  },
  "url": {
    "label": "URL",
    "format": "string"
  },
  "person_id": {
    "label": "Person id",
    "format": "string"
  },
  "name": {
    "label": "Name",
    "format": "string"
  },
  "title": {
    "label": "Title",
    "format": "string"
  },
  "overview": {
    "label": "Overview",
    "format": "string"
  },
  "country": {
    "label": "Country",
    "format": "string"
  },
  "country_code": {
    "label": "Country code",
    "format": "string"
  },
  "region": {
    "label": "Region",
    "format": "string"
  },
  "city": {
    "label": "City",
    "format": "string"
  },
  "state": {
    "label": "State",
    "format": "string"
  },
  "timezone": {
    "label": "Timezone",
    "format": "string"
  },
  "rate": {
    "label": "Rate (USD/h)",
    "format": "number"
  },
  "jss": {
    "label": "JSS",
    "format": "integer"
  },
  "jss_hidden": {
    "label": "Jss hidden",
    "format": "boolean"
  },
  "total_earnings": {
    "label": "Earnings (USD)",
    "format": "number"
  },
  "earnings_precision": {
    "label": "Earnings precision",
    "format": "string"
  },
  "earnings_hidden": {
    "label": "Earnings hidden",
    "format": "boolean"
  },
  "badge": {
    "label": "Badge",
    "format": "string"
  },
  "top_rated": {
    "label": "Top Rated",
    "format": "boolean"
  },
  "top_rated_plus": {
    "label": "Top Rated Plus",
    "format": "boolean"
  },
  "hours": {
    "label": "Hours",
    "format": "number"
  },
  "jobs_total": {
    "label": "Jobs",
    "format": "integer"
  },
  "jobs_hourly": {
    "label": "Hourly jobs",
    "format": "integer"
  },
  "jobs_fixed": {
    "label": "Fixed-price jobs",
    "format": "integer"
  },
  "contracts_total": {
    "label": "Contracts",
    "format": "integer"
  },
  "member_since": {
    "label": "Member since",
    "format": "string"
  },
  "last_worked_on": {
    "label": "Last worked",
    "format": "string"
  },
  "hire_again_pct": {
    "label": "Hire again %",
    "format": "number"
  },
  "rating": {
    "label": "Rating",
    "format": "number"
  },
  "feedback_count": {
    "label": "Feedback count",
    "format": "integer"
  },
  "recent_hours": {
    "label": "Recent hours",
    "format": "number"
  },
  "recent_jobs": {
    "label": "Recent jobs",
    "format": "integer"
  },
  "availability": {
    "label": "Availability",
    "format": "string"
  },
  "contract_to_hire": {
    "label": "Contract to hire",
    "format": "boolean"
  },
  "id_verified": {
    "label": "ID verified",
    "format": "boolean"
  },
  "phone_verified": {
    "label": "Phone verified",
    "format": "boolean"
  },
  "skills": {
    "label": "Skills",
    "format": "array"
  },
  "portfolio_count": {
    "label": "Portfolio items",
    "format": "integer"
  },
  "agency_name": {
    "label": "Agency name",
    "format": "string"
  },
  "agency_ciphertext": {
    "label": "Agency ciphertext",
    "format": "string"
  },
  "status": {
    "label": "Status",
    "format": "string"
  },
  "private_since": {
    "label": "Private since",
    "format": "string"
  },
  "source": {
    "label": "Source",
    "format": "string"
  },
  "completeness": {
    "label": "Completeness",
    "format": "string"
  },
  "fetched_at": {
    "label": "Read from Upwork",
    "format": "string"
  },
  "age_days": {
    "label": "Age (days)",
    "format": "integer"
  },
  "first_seen_at": {
    "label": "First seen",
    "format": "string"
  },
  "last_seen_at": {
    "label": "Last seen",
    "format": "string"
  },
  "card_seen_at": {
    "label": "Last in a search",
    "format": "string"
  },
  "versions": {
    "label": "Versions",
    "format": "integer"
  },
  "changes": {
    "label": "Changes",
    "format": "array"
  },
  "contracts": {
    "label": "Contracts",
    "format": "array"
  },
  "contracts_in_progress": {
    "label": "Contracts in progress",
    "format": "array"
  },
  "contracts_complete": {
    "label": "Contracts complete",
    "format": "boolean"
  },
  "portfolios": {
    "label": "Portfolios",
    "format": "array"
  },
  "testimonials": {
    "label": "Testimonials",
    "format": "array"
  },
  "specialized_profiles": {
    "label": "Specialized profiles",
    "format": "array"
  },
  "education": {
    "label": "Education",
    "format": "array"
  },
  "employment_history": {
    "label": "Employment history",
    "format": "array"
  },
  "languages": {
    "label": "Languages",
    "format": "array"
  },
  "certificates": {
    "label": "Certificates",
    "format": "array"
  },
  "other_experiences": {
    "label": "Other experiences",
    "format": "array"
  },
  "sections_fetched_at": {
    "label": "Sections fetched at",
    "format": "string"
  },
  "rank": {
    "label": "Rank",
    "format": "integer"
  },
  "memory_first_seen_at": {
    "label": "Memory: first seen",
    "format": "string"
  },
  "memory_last_seen_at": {
    "label": "Memory: last seen",
    "format": "string"
  },
  "memory_times_seen": {
    "label": "Memory: times seen",
    "format": "integer"
  }
}
```

## How it works

### 1. Sign up on Apify or log in

The Upwork Freelancer Scraper — Rates, Earnings, JSS, Work History Actor is ready to run with the inputs already set for "Upwork freelancers monitor: weekly, only the new profiles". [Sign up or log in](https://console.apify.com/create-task-from-example/t69Rf8v69l0Nbsr1a) and you'll land in Apify Console with a copy of this exact task.

### 2. Start the "Upwork freelancers monitor: weekly, only the new profiles" task

The Upwork Freelancer Scraper — Rates, Earnings, JSS, Work History Actor will start running based on the input automatically. You can also change all the input fields, like search keywords, include profiles that went private, and more, to match your specific use case.

### 3. Receive the "Upwork freelancers monitor: weekly, only the new profiles" output

Monitor the progress in real time. You will be notified as soon as your dataset is complete and ready for review. Each result includes data such as ciphertext, URL, person id, and more.

### 4. Integrate into your workflow

The final output is delivered in JSON, CSV, or Excel format, ready to be plugged into your workflow. You can also [run the "Upwork freelancers monitor: weekly, only the new profiles" task via API](https://apify.com/moxlade/upwork-freelancers.md).

## About this Actor

This example demonstrates how to use [Upwork Freelancer Scraper — Rates, Earnings, JSS, Work History](https://apify.com/moxlade/upwork-freelancers.md) with a specific input configuration. Visit the [Actor detail page](https://apify.com/moxlade/upwork-freelancers.md) to learn more, explore other use cases, and run it yourself.


## How to integrate an Actor?

This Task's input is already configured above. Use it as-is rather than inventing a new one.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For full API examples (JavaScript, Python, CLI, MCP, OpenAPI), see this Task's Actor page: https://apify.com/moxlade/upwork-freelancers.md

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).
