# Job Scam Detector & Trust Score for Job Postings (`ultimatemc/job-posting-trust-score`) Actor

Score job postings 0-100 for scam and ghost-job risk. For job boards, career centers and job seekers who scrape LinkedIn or Indeed. Flags upfront fees, fake checks, reshipping, task scams, chat-app interviews and stale postings, with evidence and FTC sources, plus the employer's H-1B filing history.

- **URL**: https://apify.com/ultimatemc/job-posting-trust-score.md
- **Developed by:** [Ultimate Foresight Inc](https://apify.com/ultimatemc) (community)
- **Categories:** Jobs, Automation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

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 examples already wired to this Actor's own input schema, see the [API](#api) section below.

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`).

# README

**Job Scam Detector & Trust Score** adds a **0-100 trust score** to every job posting, with **scam signals** (upfront fees, fake checks, reshipping, "task" jobs, chat-app interviews, free-mail recruiters, pay that's too good to be true), **ghost-job signals** (very old, evergreen or expired postings) and the employer's **H-1B filing history** from U.S. Department of Labor data. Every flag comes with a plain-English reason and the exact words that triggered it. It runs on the output of LinkedIn and Indeed job scrapers or on jobs you paste in. Click **Start** with the prefilled example to see a result in a few seconds.

> **Risk signals, not accusations.** A low score means "review this before you publish it or apply". It does **not** mean the employer is fraudulent, and a high score doesn't guarantee a job is real or still open. Scammers often impersonate real companies. Rule-based, no AI, no network calls.

### What does Job Scam Detector & Trust Score do?

- ✅ Scores each posting **0-100** with a band (`low risk`, `some caution`, `review carefully`, `high risk`)
- ✅ Reports **`scamRisk` and `ghostJobRisk` separately**, so a stale but real job isn't labeled a scam
- ✅ Detects scam patterns from **FTC job-scam guidance**: fees, fake checks and "approved vendors", reshipping, money mules, task scams, crypto pay, Telegram/WhatsApp interviews, SSN or bank details upfront, look-alike email domains
- ✅ Adds the employer's **H-1B LCA history** (86,789 employers, DOL decisions 2024-10-01 to 2026-06-30): match type, certified count, last decision date, sponsor score
- ✅ **Auto-detects fields** from LinkedIn-style and Indeed-style scraper output; `fieldMap` handles any other schema
- ✅ **Merge mode** returns your original item plus a `trust` object (drop-in enrichment); **compact mode** returns only the key fields
- ✅ Every flag includes `id`, `type`, `points`, `reason`, `evidence` and, where relevant, a `source` link

### Who is it for?

- 📰 **Job boards, aggregators and newsletters** that republish scraped jobs and don't want to show scams or dead listings
- 🎓 **Career coaches, bootcamps and university career centers** that send job lists to students
- 🌍 **International job seekers and visa tools**, thanks to the H-1B sponsor history on every posting
- 🔬 **Researchers** studying job scams, ghost jobs or pay transparency

### How to check job postings for scams

1. Click **Try for free** or **Start**. The input is prefilled with two example postings.
2. Replace them with your own jobs in **Jobs (JSON)**, or pick the dataset of a LinkedIn, Indeed or other job scraper in **Jobs dataset ID**.
3. Choose **Output mode**: original item plus `trust` object, or compact summary.
4. Click **Start**. Each posting becomes one row.
5. Filter by `trust.trustBand` or `scamRisk`, then download or fetch the results through the API.

### How the trust score works

| Signal | Points | Based on |
|---|---|---|
| Asks you to pay (application, training or starter-kit fees) | −35 | FTC "Job Scams" |
| Fake check, "send the rest", or buying equipment from an "approved vendor" | −40 | FTC "Job Scams" |
| Receiving and reshipping packages from home | −35 | FTC "Job Scams" |
| Moving money through your own bank account | −40 | FTC "Job Scams" |
| "Task" jobs: product boosting, app optimization, pay to unlock tasks | −35 | FTC task-scam alerts |
| Pay or deposits in crypto | −20 | FTC crypto alert |
| Interview or contact only on Telegram, WhatsApp or text, or a chat-app apply link | −25 / −20 | FTC |
| Asks for SSN, bank or ID documents to apply | −25 | FTC |
| Recruiter uses a free webmail address (Gmail, Outlook…) | −12 | FTC |
| A large employer is named but the contact is free webmail (impersonation pattern) | −15 | DOL data + FTC |
| Email domain doesn't match the company website, or a look-alike domain ("acme-careers.xyz") | −10 / −20 | |
| Pay far too high for a no-experience remote entry-level role | −20 | FTC |
| "Be your own boss", commission-only, MLM, no interview, mystery shopper or rebate processor | −8 to −15 | FTC |
| Missing company name, very thin description, ALL CAPS, "!!!" | −4 to −8 | |
| **Ghost job:** evergreen or "talent pool" wording, posted 45+ or 90+ days ago, reposted, expired | −5 to −15 | Posting metadata |
| No pay range (noted when the location has a pay-transparency law) | −2 / −4 | |
| **Positive:** applies through a known ATS or job board, apply link or email on the company domain, pay stated, employer appears in DOL H-1B filings | +3 to +8 | DOL LCA data |

**Scoring:** every posting starts at 80, then the points above are added. If a strong scam signal is present, positive points are capped at +5. The score is kept between 0 and 100.

| Band | Score |
|---|---|
| low risk | 75 or higher |
| some caution | 55–74 |
| review carefully | 35–54 |
| high risk | under 35 |

`scamRisk` and `ghostJobRisk` are reported separately, so a stale but real job isn't labeled a scam.

#### Employer H-1B / DOL history

Company names are matched against **U.S. DOL OFLC LCA disclosure data** (H-1B, H-1B1 and E-3), covering decisions from 2024-10-01 to 2026-06-30 for 86,789 employers. This data is public domain. Each posting gets:

- the match type and confidence;
- the certified H-1B LCA count;
- the date of the last certified decision;
- a 0–100 sponsor score and tier;
- whether the posting itself says it sponsors visas.

If a posting promises visa sponsorship but the employer name has no LCA filings, it gets a small flag. That can also just mean a new filer or a name mismatch.

### Input example

This is the prefilled input:

```json
{
  "jobs": [
    {
      "title": "Remote Administrative Assistant (No Experience)",
      "companyName": "Global Logistics Partners",
      "salary": "$45 - $55 an hour",
      "location": "Remote",
      "postedAt": "2 days ago",
      "email": "hr.globallogisticspartners@gmail.com",
      "description": "Work from home, no experience needed! You will receive a check to purchase your home office equipment from our approved vendor. Deposit the check and send the remaining balance via Zelle. Interview will be conducted via Telegram."
    },
    {
      "title": "Software Engineer II",
      "companyName": "Google",
      "location": "Sunnyvale, CA",
      "postedAt": "2026-10-14",
      "salary": "$141,000 - $202,000 a year",
      "applyUrl": "https://careers.google.com/jobs/results/123",
      "companyWebsite": "https://google.com",
      "description": "Minimum qualifications: Bachelor's degree or equivalent practical experience. 2 years of experience with software development in one or more programming languages. About the job: our team builds the payments platform used by millions of merchants. You will design, test and launch services, review code, and work with product managers. The US base salary range for this full-time position is $141,000-$202,000 + bonus + equity + benefits."
    }
  ]
}
```

Scoring a scraper's dataset in compact mode:

```json
{
  "datasetId": "YOUR_LINKEDIN_OR_INDEED_JOBS_DATASET_ID",
  "outputMode": "compact",
  "checkSponsorHistory": true,
  "staleDays": 45,
  "veryStaleDays": 90
}
```

Fields detected automatically:

- LinkedIn style: `title`, `companyName`, `descriptionText`, `salaryInfo`, `applyUrl`, `postedAt`
- Indeed style: `positionName`, `company`, `description`, `salary`, `externalApplyLink`, `postingDateParsed`, `isExpired`
- also `email`, `companyWebsite` and `location`. Use `referenceDate` (YYYY-MM-DD) to score an old export as of a given date.

### Output example

This is real output from the prefilled input above (run on 2026-10-21, default merge mode), not trimmed. Posting ages are computed from the run date, so a rerun later gives different `postedDaysAgo` values.

```json
[
  {
    "title": "Remote Administrative Assistant (No Experience)",
    "companyName": "Global Logistics Partners",
    "salary": "$45 - $55 an hour",
    "location": "Remote",
    "postedAt": "2 days ago",
    "email": "hr.globallogisticspartners@gmail.com",
    "description": "Work from home, no experience needed! You will receive a check to purchase your home office equipment from our approved vendor. Deposit the check and send the remaining balance via Zelle. Interview will be conducted via Telegram.",
    "trust": {
      "trustScore": 0,
      "trustBand": "high risk",
      "scamRisk": "high",
      "ghostJobRisk": "none found",
      "flagCount": 5,
      "flags": [
        {
          "id": "check_overpayment",
          "type": "scam",
          "points": -40,
          "reason": "Fake-check / send-the-rest / approved-vendor pattern. FTC: an offer that includes depositing a check and sending money on is a scam.",
          "evidence": "Deposit the check and send the remaining",
          "source": "https://consumer.ftc.gov/articles/job-scams"
        },
        {
          "id": "chat_app_interview",
          "type": "scam",
          "points": -25,
          "reason": "Interview or contact only through chat apps (Telegram/WhatsApp/text). FTC: real employers don't recruit that way.",
          "evidence": "Interview will be conducted via Telegram",
          "source": "https://consumer.ftc.gov/consumer-alerts/2025/08/how-spot-avoid-task-scams"
        },
        {
          "id": "pay_too_good",
          "type": "scam",
          "points": -20,
          "reason": "Pay (~$93,600+/yr) for a no-experience/remote entry-level role is far above what such roles typically pay - a common scam lure.",
          "evidence": "$45 - $55 an hour",
          "source": "https://consumer.ftc.gov/articles/job-scams"
        },
        {
          "id": "free_email_contact",
          "type": "scam",
          "points": -12,
          "reason": "Recruiter/apply contact uses a free webmail address instead of a company domain.",
          "evidence": "gmail.com",
          "source": "https://consumer.ftc.gov/articles/job-scams"
        },
        {
          "id": "thin_description",
          "type": "scam",
          "points": -5,
          "reason": "Very short description (229 chars): few verifiable details."
        },
        {
          "id": "pay_range_listed",
          "type": "positive",
          "points": 3,
          "reason": "Pay is stated."
        }
      ],
      "postedDaysAgo": 2,
      "salaryAnnualizedUsd": [
        93600,
        114400
      ],
      "sponsorHistory": {
        "matchType": "none",
        "hasLcaRecord": false
      },
      "sponsorshipStatedInPosting": "not stated",
      "disclaimer": "Automated risk signals from public FTC job-scam guidance, posting metadata and U.S. DOL H-1B LCA data. A low score means 'review before applying or publishing', not that the employer is fraudulent; a high score is not a guarantee the job is real or open."
    }
  },
  {
    "title": "Software Engineer II",
    "companyName": "Google",
    "location": "Sunnyvale, CA",
    "postedAt": "2026-10-14",
    "salary": "$141,000 - $202,000 a year",
    "applyUrl": "https://careers.google.com/jobs/results/123",
    "companyWebsite": "https://google.com",
    "description": "Minimum qualifications: Bachelor's degree or equivalent practical experience. 2 years of experience with software development in one or more programming languages. About the job: our team builds the payments platform used by millions of merchants. You will design, test and launch services, review code, and work with product managers. The US base salary range for this full-time position is $141,000-$202,000 + bonus + equity + benefits.",
    "trust": {
      "trustScore": 97,
      "trustBand": "low risk",
      "scamRisk": "none found",
      "ghostJobRisk": "none found",
      "flagCount": 0,
      "flags": [
        {
          "id": "pay_range_listed",
          "type": "positive",
          "points": 3,
          "reason": "Pay is stated."
        },
        {
          "id": "domain_matches_company",
          "type": "positive",
          "points": 6,
          "reason": "Apply link or contact email is on the company's own domain.",
          "evidence": "google.com"
        },
        {
          "id": "employer_in_dol_filings",
          "type": "positive",
          "points": 8,
          "reason": "Employer appears in U.S. DOL H-1B LCA filings (16023 certified, FY2025-FY2026 data) - evidence of a real U.S. employer entity.",
          "evidence": "Google LLC",
          "source": "https://www.dol.gov/agencies/eta/foreign-labor/performance"
        }
      ],
      "postedDaysAgo": 7,
      "salaryAnnualizedUsd": [
        141000,
        202000
      ],
      "sponsorHistory": {
        "matchType": "exact",
        "matchConfidence": 1,
        "matchedEmployer": "Google LLC",
        "hasLcaRecord": true,
        "certifiedH1bLca": 16023,
        "lastCertifiedDecision": "2026-06-30",
        "sponsorScore": 100,
        "sponsorTier": "frequent sponsor"
      },
      "sponsorshipStatedInPosting": "not stated",
      "disclaimer": "Automated risk signals from public FTC job-scam guidance, posting metadata and U.S. DOL H-1B LCA data. A low score means 'review before applying or publishing', not that the employer is fraudulent; a high score is not a guarantee the job is real or open."
    }
  }
]
```

### How much does it cost to score job postings?

This Actor uses **pay-per-event** pricing:

- **$0.002 per posting** (one result row per posting)
- a tiny Actor start fee of **$0.00005** per run
- plus the small Apify **platform usage** of the run, paid by you. For the prefilled 2-posting example this was about **$0.0001** (512 MB, about 2 seconds).

So **100 postings cost about $0.20** and **1,000 postings about $2**, plus a few cents or less of platform usage. You pay only for postings actually checked. Apify lets you set a maximum cost per run so a large batch can never exceed your budget.

### Use it through the API, integrations or AI agents

- **API:** run it and get results in one call:
  `POST https://api.apify.com/v2/acts/ultimatemc~job-posting-trust-score/run-sync-get-dataset-items` with your Apify token and the input JSON as the body. Client libraries for JavaScript and Python are on the **API** tab.
- **AI agents (MCP):** add `https://mcp.apify.com?tools=ultimatemc/job-posting-trust-score` to Claude, Cursor, ChatGPT or any MCP client, and your agent can check whether a job posting looks like a scam as a tool. See [Apify MCP server](https://docs.apify.com/mcp).
- **Chain it after a scraper:** pass the `datasetId` of another Actor's run, or trigger this Actor with a webhook when the scraper finishes.
- **Automation:** schedule runs, trigger webhooks, or connect Make, Zapier, n8n, Google Sheets and other integrations from Apify Console.

### FAQ

#### Does a low score mean the job is a scam?

No. It means the posting has warning signs worth checking. Read the `evidence` in each flag before acting.

#### Does a high score mean the job is real?

No. Scammers copy real companies' names and postings. The score only reflects the text and metadata you supply.

#### Does it visit the job page or check the website?

No. It makes no network calls. It doesn't check domain age or whether the posting is still live.

#### Does it use AI?

No. It's rule-based, so the same posting always gets the same score, and every scam rule cites public FTC guidance.

#### How current is the H-1B data?

The bundled DOL OFLC LCA disclosure data covers decisions from 2024-10-01 to 2026-06-30 (public domain), with personal fields removed.

### Limitations

- English only and keyword-based. It can miss new scam scripts and misread unusual wording.
- Free webmail is common for real small local employers, so it costs only a moderate penalty.
- H-1B matching uses the employer **name** only and can pick a sibling entity; check `sponsorHistory.matchType` and `matchConfidence`. Most legitimate small employers never file LCAs, so a missing record isn't a negative signal.
- Ghost-job signals depend on the dates your scraper returns. "Reposted" is detected only when the scraper exposes it.
- U.S.-focused (FTC guidance, DOL data, state pay-transparency notes).

### Other tools by Ultimate Foresight

- [Ad Copy Policy Checker for Meta, Google & TikTok](https://apify.com/ultimatemc/ad-copy-policy-checker): checks ad text against Facebook, Instagram, Google Ads and TikTok ad policies before you submit.
- [H-1B Visa Sponsor Checker & Score for Job Listings](https://apify.com/ultimatemc/h1b-visa-sponsor-score): adds Department of Labor H-1B sponsorship history and a 0-100 score to company names or job listings.
- [Chain vs Independent Labeler for Google Maps Leads](https://apify.com/ultimatemc/chain-vs-independent-labeler): labels local businesses as chain, franchise or independent.
- [YouTube Monetization Checker for Scripts & Titles](https://apify.com/ultimatemc/youtube-script-monetization-checker): pre-checks titles, descriptions and scripts for wording that leads to limited or no ads.
- [Etsy & eBay Listing Policy & Banned Item Checker](https://apify.com/ultimatemc/etsy-ebay-listing-policy-checker): pre-checks marketplace listings for prohibited items, counterfeit wording and off-platform contact.
- [SAM.gov Amendment & Opportunity Change Tracker](https://apify.com/ultimatemc/sam-gov-opportunity-change-detector): shows what changed between versions of a SAM.gov notice: deadlines, set-asides, NAICS and attachments.
- [Product Recall Checker for Brands, UPCs & Products](https://apify.com/ultimatemc/product-recall-matcher): matches your brands, products, UPCs or model numbers against CPSC, FDA and NHTSA recalls.
- [App Store & Google Play Listing Policy Checker](https://apify.com/ultimatemc/app-store-listing-policy-checker): pre-checks app names, subtitles and descriptions against Apple and Google Play metadata rules.

Found a scam pattern we miss or a false positive? Open an issue on the **Issues** tab with the posting text, and we'll review the rule.

# Actor input Schema

## `datasetId` (type: `string`):

Apify dataset from a job scraper (LinkedIn, Indeed, Glassdoor, ZipRecruiter, career pages...). Common fields (title/positionName, companyName/company, description/descriptionText, salary/salaryInfo, location, url/link, applyUrl/externalApplyLink, email, companyWebsite, postedAt/postingDateParsed) are detected automatically.

## `jobs` (type: `array`):

Or paste job objects directly. Same field names as above.

## `fieldMap` (type: `object`):

Override field names, e.g. {"title": "job_name", "company": "org", "description": "body", "salary": "pay", "applyUrl": "apply", "email": "contact", "companyWebsite": "site", "postedAt": "created"}.

## `outputMode` (type: `string`):

merge = original job item + a 'trust' object (drop-in enrichment). compact = only key job fields + score and flags.

## `checkSponsorHistory` (type: `boolean`):

Matches the company name against U.S. DOL H-1B LCA disclosure data (FY2025 to FY2026 Q3) to add sponsor history and an 'employer appears in federal filings' signal.

## `staleDays` (type: `integer`):

Postings older than this get a small ghost-job flag.

## `veryStaleDays` (type: `integer`):

Postings older than this get a larger ghost-job flag.

## `referenceDate` (type: `string`):

YYYY-MM-DD used to compute posting age (default: today). Useful when scoring an old export.

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

Maximum number of postings to score in this run.

## Actor input object example

```json
{
  "jobs": [
    {
      "title": "Remote Administrative Assistant (No Experience)",
      "companyName": "Global Logistics Partners",
      "salary": "$45 - $55 an hour",
      "location": "Remote",
      "postedAt": "2 days ago",
      "email": "hr.globallogisticspartners@gmail.com",
      "description": "Work from home, no experience needed! You will receive a check to purchase your home office equipment from our approved vendor. Deposit the check and send the remaining balance via Zelle. Interview will be conducted via Telegram."
    },
    {
      "title": "Software Engineer II",
      "companyName": "Google",
      "location": "Sunnyvale, CA",
      "postedAt": "2026-10-14",
      "salary": "$141,000 - $202,000 a year",
      "applyUrl": "https://careers.google.com/jobs/results/123",
      "companyWebsite": "https://google.com",
      "description": "Minimum qualifications: Bachelor's degree or equivalent practical experience. 2 years of experience with software development in one or more programming languages. About the job: our team builds the payments platform used by millions of merchants. You will design, test and launch services, review code, and work with product managers. The US base salary range for this full-time position is $141,000-$202,000 + bonus + equity + benefits."
    }
  ],
  "outputMode": "merge",
  "checkSponsorHistory": true,
  "staleDays": 45,
  "veryStaleDays": 90,
  "maxItems": 1000
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "jobs": [
        {
            "title": "Remote Administrative Assistant (No Experience)",
            "companyName": "Global Logistics Partners",
            "salary": "$45 - $55 an hour",
            "location": "Remote",
            "postedAt": "2 days ago",
            "email": "hr.globallogisticspartners@gmail.com",
            "description": "Work from home, no experience needed! You will receive a check to purchase your home office equipment from our approved vendor. Deposit the check and send the remaining balance via Zelle. Interview will be conducted via Telegram."
        },
        {
            "title": "Software Engineer II",
            "companyName": "Google",
            "location": "Sunnyvale, CA",
            "postedAt": "2026-10-14",
            "salary": "$141,000 - $202,000 a year",
            "applyUrl": "https://careers.google.com/jobs/results/123",
            "companyWebsite": "https://google.com",
            "description": "Minimum qualifications: Bachelor's degree or equivalent practical experience. 2 years of experience with software development in one or more programming languages. About the job: our team builds the payments platform used by millions of merchants. You will design, test and launch services, review code, and work with product managers. The US base salary range for this full-time position is $141,000-$202,000 + bonus + equity + benefits."
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ultimatemc/job-posting-trust-score").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 = { "jobs": [
        {
            "title": "Remote Administrative Assistant (No Experience)",
            "companyName": "Global Logistics Partners",
            "salary": "$45 - $55 an hour",
            "location": "Remote",
            "postedAt": "2 days ago",
            "email": "hr.globallogisticspartners@gmail.com",
            "description": "Work from home, no experience needed! You will receive a check to purchase your home office equipment from our approved vendor. Deposit the check and send the remaining balance via Zelle. Interview will be conducted via Telegram.",
        },
        {
            "title": "Software Engineer II",
            "companyName": "Google",
            "location": "Sunnyvale, CA",
            "postedAt": "2026-10-14",
            "salary": "$141,000 - $202,000 a year",
            "applyUrl": "https://careers.google.com/jobs/results/123",
            "companyWebsite": "https://google.com",
            "description": "Minimum qualifications: Bachelor's degree or equivalent practical experience. 2 years of experience with software development in one or more programming languages. About the job: our team builds the payments platform used by millions of merchants. You will design, test and launch services, review code, and work with product managers. The US base salary range for this full-time position is $141,000-$202,000 + bonus + equity + benefits.",
        },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("ultimatemc/job-posting-trust-score").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 '{
  "jobs": [
    {
      "title": "Remote Administrative Assistant (No Experience)",
      "companyName": "Global Logistics Partners",
      "salary": "$45 - $55 an hour",
      "location": "Remote",
      "postedAt": "2 days ago",
      "email": "hr.globallogisticspartners@gmail.com",
      "description": "Work from home, no experience needed! You will receive a check to purchase your home office equipment from our approved vendor. Deposit the check and send the remaining balance via Zelle. Interview will be conducted via Telegram."
    },
    {
      "title": "Software Engineer II",
      "companyName": "Google",
      "location": "Sunnyvale, CA",
      "postedAt": "2026-10-14",
      "salary": "$141,000 - $202,000 a year",
      "applyUrl": "https://careers.google.com/jobs/results/123",
      "companyWebsite": "https://google.com",
      "description": "Minimum qualifications: Bachelor'\''s degree or equivalent practical experience. 2 years of experience with software development in one or more programming languages. About the job: our team builds the payments platform used by millions of merchants. You will design, test and launch services, review code, and work with product managers. The US base salary range for this full-time position is $141,000-$202,000 + bonus + equity + benefits."
    }
  ]
}' |
apify call ultimatemc/job-posting-trust-score --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ultimatemc/job-posting-trust-score"
        }
    }
}
```

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/r4YnECMnA4E5xtnqb/builds/WuBX4Bgdw84lfxFGx/openapi.json
