# JSON Resume to PDF Generator (`rainminer/json-resume-to-pdf`) Actor

Turn a JSON Resume into an ATS-ready PDF you can attach to job boards. Five print themes (Even, Elegant, Stack Overflow, Kendall, Flat), A4 or US Letter, and a download URL. Open-standard JSON — no $49/month resume API. Paste resume.json, pick a theme, generate PDFs via API or Console.

- **URL**: https://apify.com/rainminer/json-resume-to-pdf.md
- **Developed by:** [rainminer](https://apify.com/rainminer) (community)
- **Categories:** Jobs, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.37 / 1,000 generated pdfs

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

**JSON Resume in. ATS-ready PDF out.** Call it as a **resume generation API** on Apify: pick a print theme, choose A4 or Letter, and download a file you can attach to a job board. No $49/month seat. No proprietary schema. No live link that an ATS cannot open.

Paste a [JSON Resume](https://jsonresume.org/schema) (or start from the Alex Rivera sample on the Input tab), choose a theme, run.

<table>
<tr>
<td width="20%" valign="top" align="center">
<a href="https://apify.com/rainminer/json-resume-to-pdf"><img src="https://api.apify.com/v2/key-value-stores/cXV6yBl2W9glFE8IW/records/even.jpg" alt="Even JSON Resume PDF template" width="100%"></a>
<br>
<strong>Even</strong><br>
Default · two-column
</td>
<td width="20%" valign="top" align="center">
<a href="https://apify.com/rainminer/json-resume-to-pdf"><img src="https://api.apify.com/v2/key-value-stores/cXV6yBl2W9glFE8IW/records/elegant.jpg" alt="Elegant JSON Resume PDF template" width="100%"></a>
<br>
<strong>Elegant</strong><br>
Card layout
</td>
<td width="20%" valign="top" align="center">
<a href="https://apify.com/rainminer/json-resume-to-pdf"><img src="https://api.apify.com/v2/key-value-stores/cXV6yBl2W9glFE8IW/records/stackoverflow.jpg" alt="Stack Overflow JSON Resume PDF template" width="100%"></a>
<br>
<strong>Stack Overflow</strong><br>
Classic SO CV
</td>
<td width="20%" valign="top" align="center">
<a href="https://apify.com/rainminer/json-resume-to-pdf"><img src="https://api.apify.com/v2/key-value-stores/cXV6yBl2W9glFE8IW/records/kendall.jpg" alt="Kendall JSON Resume PDF template" width="100%"></a>
<br>
<strong>Kendall</strong><br>
Bootstrap · photo header
</td>
<td width="20%" valign="top" align="center">
<a href="https://apify.com/rainminer/json-resume-to-pdf"><img src="https://api.apify.com/v2/key-value-stores/cXV6yBl2W9glFE8IW/records/flat.jpg" alt="Flat JSON Resume PDF template" width="100%"></a>
<br>
<strong>Flat</strong><br>
Minimal single column
</td>
</tr>
</table>

### What is JSON Resume to PDF?

JSON Resume to PDF is a **JSON-to-PDF resume API**. It takes a [JSON Resume 1.0.0](https://jsonresume.org/schema) document, renders it with a community `jsonresume-theme-*` package, waits for fonts, and prints a PDF. The file lands in the run's Key-Value Store; the dataset row has the download URL.

You do not write HTML or CSS. You do not host a resume website. You keep one structured resume, **tailor the JSON for each job**, and generate a new PDF.

#### What you get

- **Five print templates** — Even, Elegant, Stack Overflow, Kendall, and Flat (the most-used JSON Resume themes on npm)
- **Open standard input** — `basics`, `work`, `education`, `skills`, `projects`, … not a vendor-only JSON shape
- **A4 or US Letter** — the two paper sizes job boards actually want
- **A real file** — `application/pdf` in storage, with a `pdfUrl` you can fetch from any language
- **Apify platform** — API, schedules, webhooks, integrations, run logs, pay per generated PDF plus platform usage

### Why generate a PDF instead of sharing a live resume link?

Products like [LiveResume](https://resumeislive.vercel.app/) argue that a PDF is a dead snapshot. For a personal site that can be true. For **job applications it is not**:

- Most ATS and company portals still ask for a **PDF or DOCX attachment**. A live URL is optional, extra, or blocked.
- Recruiters forward files. They do not re-open your hosted editor.
- You often *want* a snapshot: the version you sent for that posting, with that title and those highlights.

Keep a live page if you like. Use this Actor for the file you actually submit.

### JSON Resume API vs hosted resume generators

[UseResume's resume generation API](https://useresume.ai/resume-generation-api) is a hosted SaaS: proprietary `content` + `style` JSON, many color variants, cover letters, **$49/month**. Fine if you want that bundle.

JSON Resume to PDF is the other trade: **portable JSON Resume**, themes you can also render locally with resume-cli, and **Apify compute** instead of a monthly API seat.

| | **JSON Resume to PDF** | Hosted resume API ($49/mo class) | Live-link resume |
| --- | --- | --- | --- |
| Input | JSON Resume (open) | Vendor `content` + `style` | WYSIWYG editor |
| Output | PDF you own in Key-Value Store | Hosted PDF download | Live URL (PDF export extra) |
| Templates | 5 npm print themes | 20–30 in-house layouts | Site theme |
| Paper size | A4 or Letter | Style object | Limited |
| Job boards / ATS | Attach the PDF | Attach the PDF | Link often rejected |
| Pricing | Per PDF + Apify usage | Monthly platform fee + credits | SaaS subscription |
| Automation | `apify-client`, schedules, webhooks | REST + vendor SDK | Usually none |

### Who uses a JSON Resume PDF API?

Named jobs this Actor is built for:

1. **Software engineers on Greenhouse / Lever** — keep one `resume.json`, rewrite `summary` and `work[].highlights` per posting, print a PDF to upload.
2. **Career coaches producing client resumes** — same schema for every client; swap theme and paper size instead of rebuilding Word files.
3. **Recruiting agencies batching candidate PDFs** — call the Actor from a pipeline whenever a candidate record changes.
4. **Job-search agents** — an LLM rewrites highlights against a job description, then this Actor prints the file.
5. **Bootcamps exporting student resumes** — one JSON Resume per graduate, Even or Flat theme, Letter for US employers.
6. **ATS-safe Flat theme runs** — picky portals that mangle two-column layouts; generate a second PDF with Flat and compare.
7. **US Letter for American job boards** — LinkedIn Easy Apply, Workday, and most US ATS expect Letter.
8. **A4 for EU / UK applications** — the default paper size for European employers.
9. **Engineering CVs on the Stack Overflow theme** — compact sections and skill tags that scan like the classic SO CV.
10. **HR tools that already store JSON Resume** — add a print step without adopting a vendor schema.
11. **Portfolio sites that still need an attachment** — keep the live page; generate the PDF the application form requires.
12. **Multiple roles from one source of truth** — duplicate JSON per title (backend, staff, manager) and print each version.

### How to generate a resume PDF from JSON

1. Open the **Input** tab. Start from the prefilled **Alex Rivera** sample or paste your `resume.json`.
2. Tailor `basics.summary`, the relevant `work[].highlights`, and `skills` to the job description.
3. Pick a **theme**. Even is the default (same family as the official resume CLI).
4. Set **paper size** to `A4` or `Letter`.
5. Run. Download from the Key-Value Store or the dataset `pdfUrl`.
6. Duplicate the JSON for the next posting and run again.

Anyone who can edit JSON can use this. There is no login to a resume host.

#### Resume generation API example

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });

const run = await client.actor('rainminer/json-resume-to-pdf').call({
  resume: {
    basics: {
      name: 'Alex Rivera',
      label: 'Staff Product Engineer',
      email: 'alex.rivera@example.com',
      summary: 'Product engineer focused on search and marketplace hiring tools.',
    },
    work: [
      {
        name: 'Northwind Labs',
        position: 'Staff Product Engineer',
        startDate: '2021-03-01',
        highlights: ['Cut time-to-shortlist from 9 days to 3.'],
      },
    ],
  },
  theme: 'even',
  format: 'Letter',
  printBackground: true,
});

const item = (await client.dataset(run.defaultDatasetId).listItems()).items[0];
const pdf = await client.keyValueStore(run.defaultKeyValueStoreId).getRecord(item.fileName);
// pdf.value is the PDF bytes
```

Python, PHP, and curl work the same way against the [Apify Actors API](https://docs.apify.com/api/v2). Need a generic HTML page instead of a resume? Use [HTML to PDF](https://apify.com/rainminer/html-to-pdf-converter).

### Resume templates (JSON Resume themes)

The Actor ships the five most-installed `jsonresume-theme-*` packages. Previews above use the same sample resume as the Input tab.

| Theme | Best for |
| --- | --- |
| **Even** | Default two-column. General engineering and product resumes. |
| **Elegant** | Card layout, contact header. More designed, still professional. |
| **Stack Overflow** | Classic SO CV: compact sections, skill tags, easy to scan. |
| **Kendall** | Bootstrap layout; photo header when `basics.image` is set. |
| **Flat** | Minimal single column. Fewest visual flourishes; safest for picky ATS. |

Some themes honor JSON Resume `meta` options (for example Even's `meta.themeOptions.colors`). See each theme's npm page. This Actor does not add extra color pickers.

### Input

Open the **Input** tab for the full editor. Fields:

| Field | What it is |
| --- | --- |
| `resume` | JSON Resume object (`basics`, `work`, `education`, `skills`, `projects`, …) |
| `theme` | `even` (default), `elegant`, `stackoverflow`, `kendall`, or `flat` |
| `fileName` | Optional Key-Value Store key. Defaults to `pdf-{name}-{theme}.pdf` |
| `format` | Paper size: `A4` (default) or `Letter` |
| `printBackground` | Include CSS backgrounds (default `true`) |

Example:

```json
{
  "resume": {
    "basics": {
      "name": "Alex Rivera",
      "label": "Staff Product Engineer",
      "email": "alex.rivera@example.com",
      "summary": "Product engineer focused on search and marketplace hiring tools."
    },
    "work": [
      {
        "name": "Northwind Labs",
        "position": "Staff Product Engineer",
        "startDate": "2021-03-01",
        "highlights": ["Cut time-to-shortlist from 9 days to 3."]
      }
    ]
  },
  "theme": "even",
  "format": "A4",
  "printBackground": true
}
```

The schema follows [JSON Resume 1.0.0](https://jsonresume.org/schema). Extra fields are ignored. `basics.name` is required. Empty sections are omitted by the theme.

### Output

The PDF is stored in the default Key-Value Store. The dataset has one row with the download link:

```json
{
  "fileName": "pdf-alex-rivera-even.pdf",
  "pdfUrl": "https://api.apify.com/v2/key-value-stores/{storeId}/records/pdf-alex-rivera-even.pdf",
  "key": "pdf-alex-rivera-even.pdf",
  "bytes": 42104,
  "theme": "even",
  "candidateName": "Alex Rivera",
  "label": "Staff Product Engineer",
  "format": "A4"
}
```

JSON / CSV / Excel exports of the dataset are **metadata**, not the PDF bytes. Use `pdfUrl` or the Key-Value Store for the resume.

Unnamed run storage on Apify expires after 7 days. Save the PDF if you need it longer, or copy it to your own store from the API.

### How much does a resume PDF cost?

This Actor is **pay-per-event**. You pay a small fee per generated PDF **plus Apify platform usage** (compute for the Chrome print). There is no $49/month resume-API plan.

Each run is a short print: one HTML document, CDN fonts, one PDF. A single resume usually finishes in well under a minute on 1 GB of memory. Generate a few sample PDFs on the free tier to see compute cost for your typical resume length. Batch jobs (many tailored resumes) are a good fit for Actor tasks and schedules.

### FAQ

**Is this a resume parser?** No. Parsers turn PDF into JSON. This Actor goes the other way: JSON Resume in, PDF out.

**Do I need to host my resume on jsonresume.org?** No. Paste the JSON in input. Any valid JSON Resume document works.

**Will Applicant Tracking Systems read the PDF?** Themes are HTML/CSS print layouts. Even and Flat are the most conventional. If a specific ATS mangles icons, generate a second PDF with Flat and compare.

**Can I change colors?** Some themes honor JSON Resume `meta` options. The Actor does not add extra color inputs.

**Does this replace UseResume or LiveResume?** No. UseResume bundles cover letters, parsing, and AI tailoring in one paid API. LiveResume is a hosted live profile with analytics. This Actor is the **print step**: open JSON in, PDF file out, on Apify.

**Is it legal to store resumes here?** You send your own (or your client's) resume data to a run you control. Treat the JSON as personal data: do not put other people's resumes into public shared runs. Follow GDPR and local employment rules for any data you keep.

**Where do I get help?** Open an issue on the Actor page. Feature ideas (more themes, job-description tailoring) are welcome.

### Related Actors

- [HTML to PDF](https://apify.com/rainminer/html-to-pdf-converter) — render arbitrary HTML or a URL to PDF
- [URL to PDF](https://apify.com/rainminer/url-to-pdf-converter) — print a public page to PDF
- [CSV / TSV to JSON Converter](https://apify.com/rainminer/csv-to-json-converter) — structured file conversion for pipelines

### Image Credit

Theme previews are generated from the sample JSON Resume using [jsonresume-theme-even](https://www.npmjs.com/package/jsonresume-theme-even), [jsonresume-theme-elegant](https://www.npmjs.com/package/jsonresume-theme-elegant), [jsonresume-theme-stackoverflow](https://www.npmjs.com/package/jsonresume-theme-stackoverflow), [jsonresume-theme-kendall](https://www.npmjs.com/package/jsonresume-theme-kendall), and [jsonresume-theme-flat](https://www.npmjs.com/package/jsonresume-theme-flat). Sample candidate data is fictional.

# Actor input Schema

## `resume` (type: `object`):

A [JSON Resume](https://jsonresume.org/schema) document. Keep one copy of your CV and tweak summary, highlights, and skills for each job before generating a PDF.

## `theme` (type: `string`):

JSON Resume theme used to render the PDF. Even is the default resume-cli theme; Elegant is a card layout; Stack Overflow matches the classic SO CV; Kendall is Bootstrap-based; Flat is a compact single column.

## `fileName` (type: `string`):

Key-Value Store record name for the generated PDF. Defaults to pdf-{name}-{theme}.pdf.

## `format` (type: `string`):

Page size for the generated PDF. A4 is the default (EU/UK). Letter is standard for US job boards.

## `printBackground` (type: `boolean`):

Include CSS backgrounds and theme colors in the PDF.

## Actor input object example

```json
{
  "resume": {
    "basics": {
      "name": "Alex Rivera",
      "label": "Staff Product Engineer",
      "image": "",
      "email": "alex.rivera@example.com",
      "phone": "+1 (415) 555-0148",
      "url": "https://alexrivera.dev",
      "summary": "Product engineer with 10 years of experience shipping search, marketplace, and growth systems. I turn messy user journeys into reliable APIs and clear UIs, and I like pairing with design and data to ship the smallest change that moves a metric.",
      "location": {
        "city": "Austin",
        "region": "Texas",
        "countryCode": "US"
      },
      "profiles": [
        {
          "network": "LinkedIn",
          "username": "alexrivera",
          "url": "https://www.linkedin.com/in/alexrivera"
        },
        {
          "network": "GitHub",
          "username": "alexrivera",
          "url": "https://github.com/alexrivera"
        }
      ]
    },
    "work": [
      {
        "name": "Northwind Labs",
        "position": "Staff Product Engineer",
        "url": "https://northwind.example",
        "startDate": "2021-03-01",
        "summary": "Lead engineer for the applicant marketplace: matching, search ranking, and the hiring dashboard used by 4k weekly active recruiters.",
        "highlights": [
          "Cut time-to-shortlist from 9 days to 3 by rebuilding search around structured skills and recency.",
          "Designed a job-specific CV export pipeline so candidates can generate a tailored PDF in under a minute.",
          "Mentored a pod of 6 engineers; introduced RFC reviews that reduced production incidents by 40%."
        ]
      },
      {
        "name": "Harbor Analytics",
        "position": "Senior Software Engineer",
        "url": "https://harbor.example",
        "startDate": "2017-06-01",
        "endDate": "2021-02-01",
        "summary": "Owned the customer-facing reporting product used by mid-market ops teams.",
        "highlights": [
          "Shipped a saved-view system that became 70% of weekly sessions.",
          "Replaced a nightly batch job with streaming aggregates, dropping dashboard lag from 24h to under 2 minutes.",
          "Partnered with CS to turn the top 12 support tickets into self-serve filters."
        ]
      },
      {
        "name": "Brightline Studio",
        "position": "Software Engineer",
        "url": "https://brightline.example",
        "startDate": "2014-08-01",
        "endDate": "2017-05-01",
        "summary": "Full-stack engineer on client web apps for education and local commerce.",
        "highlights": [
          "Built the first public API and docs site; 30 agencies integrated in the first quarter.",
          "Introduced end-to-end tests that caught checkout regressions before launch."
        ]
      }
    ],
    "education": [
      {
        "institution": "University of Texas at Austin",
        "url": "https://www.utexas.edu/",
        "area": "Computer Science",
        "studyType": "B.S.",
        "startDate": "2010-08-01",
        "endDate": "2014-05-01"
      }
    ],
    "skills": [
      {
        "name": "Product engineering",
        "level": "Master",
        "keywords": [
          "TypeScript",
          "Node.js",
          "React",
          "PostgreSQL",
          "search"
        ]
      },
      {
        "name": "Collaboration",
        "level": "Advanced",
        "keywords": [
          "RFCs",
          "mentoring",
          "design pairing",
          "incident review"
        ]
      }
    ],
    "projects": [
      {
        "name": "Open Skills Graph",
        "startDate": "2022-01-01",
        "description": "Open dataset mapping job titles to skills for resume tailoring and job matching experiments.",
        "highlights": [
          "Used by three hiring-tool prototypes to re-rank CVs against a job description."
        ],
        "url": "https://github.com/alexrivera/open-skills-graph"
      }
    ],
    "languages": [
      {
        "language": "English",
        "fluency": "Native speaker"
      },
      {
        "language": "Spanish",
        "fluency": "Professional working"
      }
    ],
    "certificates": [
      {
        "name": "AWS Certified Solutions Architect – Associate",
        "date": "2023-04-12",
        "issuer": "Amazon Web Services",
        "url": "https://aws.amazon.com/certification/"
      }
    ]
  },
  "theme": "even",
  "format": "A4",
  "printBackground": true
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `keyValueStore` (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 = {
    "resume": {
        "basics": {
            "name": "Alex Rivera",
            "label": "Staff Product Engineer",
            "image": "",
            "email": "alex.rivera@example.com",
            "phone": "+1 (415) 555-0148",
            "url": "https://alexrivera.dev",
            "summary": "Product engineer with 10 years of experience shipping search, marketplace, and growth systems. I turn messy user journeys into reliable APIs and clear UIs, and I like pairing with design and data to ship the smallest change that moves a metric.",
            "location": {
                "city": "Austin",
                "region": "Texas",
                "countryCode": "US"
            },
            "profiles": [
                {
                    "network": "LinkedIn",
                    "username": "alexrivera",
                    "url": "https://www.linkedin.com/in/alexrivera"
                },
                {
                    "network": "GitHub",
                    "username": "alexrivera",
                    "url": "https://github.com/alexrivera"
                }
            ]
        },
        "work": [
            {
                "name": "Northwind Labs",
                "position": "Staff Product Engineer",
                "url": "https://northwind.example",
                "startDate": "2021-03-01",
                "summary": "Lead engineer for the applicant marketplace: matching, search ranking, and the hiring dashboard used by 4k weekly active recruiters.",
                "highlights": [
                    "Cut time-to-shortlist from 9 days to 3 by rebuilding search around structured skills and recency.",
                    "Designed a job-specific CV export pipeline so candidates can generate a tailored PDF in under a minute.",
                    "Mentored a pod of 6 engineers; introduced RFC reviews that reduced production incidents by 40%."
                ]
            },
            {
                "name": "Harbor Analytics",
                "position": "Senior Software Engineer",
                "url": "https://harbor.example",
                "startDate": "2017-06-01",
                "endDate": "2021-02-01",
                "summary": "Owned the customer-facing reporting product used by mid-market ops teams.",
                "highlights": [
                    "Shipped a saved-view system that became 70% of weekly sessions.",
                    "Replaced a nightly batch job with streaming aggregates, dropping dashboard lag from 24h to under 2 minutes.",
                    "Partnered with CS to turn the top 12 support tickets into self-serve filters."
                ]
            },
            {
                "name": "Brightline Studio",
                "position": "Software Engineer",
                "url": "https://brightline.example",
                "startDate": "2014-08-01",
                "endDate": "2017-05-01",
                "summary": "Full-stack engineer on client web apps for education and local commerce.",
                "highlights": [
                    "Built the first public API and docs site; 30 agencies integrated in the first quarter.",
                    "Introduced end-to-end tests that caught checkout regressions before launch."
                ]
            }
        ],
        "education": [
            {
                "institution": "University of Texas at Austin",
                "url": "https://www.utexas.edu/",
                "area": "Computer Science",
                "studyType": "B.S.",
                "startDate": "2010-08-01",
                "endDate": "2014-05-01"
            }
        ],
        "skills": [
            {
                "name": "Product engineering",
                "level": "Master",
                "keywords": [
                    "TypeScript",
                    "Node.js",
                    "React",
                    "PostgreSQL",
                    "search"
                ]
            },
            {
                "name": "Collaboration",
                "level": "Advanced",
                "keywords": [
                    "RFCs",
                    "mentoring",
                    "design pairing",
                    "incident review"
                ]
            }
        ],
        "projects": [
            {
                "name": "Open Skills Graph",
                "startDate": "2022-01-01",
                "description": "Open dataset mapping job titles to skills for resume tailoring and job matching experiments.",
                "highlights": [
                    "Used by three hiring-tool prototypes to re-rank CVs against a job description."
                ],
                "url": "https://github.com/alexrivera/open-skills-graph"
            }
        ],
        "languages": [
            {
                "language": "English",
                "fluency": "Native speaker"
            },
            {
                "language": "Spanish",
                "fluency": "Professional working"
            }
        ],
        "certificates": [
            {
                "name": "AWS Certified Solutions Architect – Associate",
                "date": "2023-04-12",
                "issuer": "Amazon Web Services",
                "url": "https://aws.amazon.com/certification/"
            }
        ]
    },
    "theme": "even",
    "format": "A4",
    "printBackground": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("rainminer/json-resume-to-pdf").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 = {
    "resume": {
        "basics": {
            "name": "Alex Rivera",
            "label": "Staff Product Engineer",
            "image": "",
            "email": "alex.rivera@example.com",
            "phone": "+1 (415) 555-0148",
            "url": "https://alexrivera.dev",
            "summary": "Product engineer with 10 years of experience shipping search, marketplace, and growth systems. I turn messy user journeys into reliable APIs and clear UIs, and I like pairing with design and data to ship the smallest change that moves a metric.",
            "location": {
                "city": "Austin",
                "region": "Texas",
                "countryCode": "US",
            },
            "profiles": [
                {
                    "network": "LinkedIn",
                    "username": "alexrivera",
                    "url": "https://www.linkedin.com/in/alexrivera",
                },
                {
                    "network": "GitHub",
                    "username": "alexrivera",
                    "url": "https://github.com/alexrivera",
                },
            ],
        },
        "work": [
            {
                "name": "Northwind Labs",
                "position": "Staff Product Engineer",
                "url": "https://northwind.example",
                "startDate": "2021-03-01",
                "summary": "Lead engineer for the applicant marketplace: matching, search ranking, and the hiring dashboard used by 4k weekly active recruiters.",
                "highlights": [
                    "Cut time-to-shortlist from 9 days to 3 by rebuilding search around structured skills and recency.",
                    "Designed a job-specific CV export pipeline so candidates can generate a tailored PDF in under a minute.",
                    "Mentored a pod of 6 engineers; introduced RFC reviews that reduced production incidents by 40%.",
                ],
            },
            {
                "name": "Harbor Analytics",
                "position": "Senior Software Engineer",
                "url": "https://harbor.example",
                "startDate": "2017-06-01",
                "endDate": "2021-02-01",
                "summary": "Owned the customer-facing reporting product used by mid-market ops teams.",
                "highlights": [
                    "Shipped a saved-view system that became 70% of weekly sessions.",
                    "Replaced a nightly batch job with streaming aggregates, dropping dashboard lag from 24h to under 2 minutes.",
                    "Partnered with CS to turn the top 12 support tickets into self-serve filters.",
                ],
            },
            {
                "name": "Brightline Studio",
                "position": "Software Engineer",
                "url": "https://brightline.example",
                "startDate": "2014-08-01",
                "endDate": "2017-05-01",
                "summary": "Full-stack engineer on client web apps for education and local commerce.",
                "highlights": [
                    "Built the first public API and docs site; 30 agencies integrated in the first quarter.",
                    "Introduced end-to-end tests that caught checkout regressions before launch.",
                ],
            },
        ],
        "education": [{
                "institution": "University of Texas at Austin",
                "url": "https://www.utexas.edu/",
                "area": "Computer Science",
                "studyType": "B.S.",
                "startDate": "2010-08-01",
                "endDate": "2014-05-01",
            }],
        "skills": [
            {
                "name": "Product engineering",
                "level": "Master",
                "keywords": [
                    "TypeScript",
                    "Node.js",
                    "React",
                    "PostgreSQL",
                    "search",
                ],
            },
            {
                "name": "Collaboration",
                "level": "Advanced",
                "keywords": [
                    "RFCs",
                    "mentoring",
                    "design pairing",
                    "incident review",
                ],
            },
        ],
        "projects": [{
                "name": "Open Skills Graph",
                "startDate": "2022-01-01",
                "description": "Open dataset mapping job titles to skills for resume tailoring and job matching experiments.",
                "highlights": ["Used by three hiring-tool prototypes to re-rank CVs against a job description."],
                "url": "https://github.com/alexrivera/open-skills-graph",
            }],
        "languages": [
            {
                "language": "English",
                "fluency": "Native speaker",
            },
            {
                "language": "Spanish",
                "fluency": "Professional working",
            },
        ],
        "certificates": [{
                "name": "AWS Certified Solutions Architect – Associate",
                "date": "2023-04-12",
                "issuer": "Amazon Web Services",
                "url": "https://aws.amazon.com/certification/",
            }],
    },
    "theme": "even",
    "format": "A4",
    "printBackground": True,
}

# Run the Actor and wait for it to finish
run = client.actor("rainminer/json-resume-to-pdf").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 '{
  "resume": {
    "basics": {
      "name": "Alex Rivera",
      "label": "Staff Product Engineer",
      "image": "",
      "email": "alex.rivera@example.com",
      "phone": "+1 (415) 555-0148",
      "url": "https://alexrivera.dev",
      "summary": "Product engineer with 10 years of experience shipping search, marketplace, and growth systems. I turn messy user journeys into reliable APIs and clear UIs, and I like pairing with design and data to ship the smallest change that moves a metric.",
      "location": {
        "city": "Austin",
        "region": "Texas",
        "countryCode": "US"
      },
      "profiles": [
        {
          "network": "LinkedIn",
          "username": "alexrivera",
          "url": "https://www.linkedin.com/in/alexrivera"
        },
        {
          "network": "GitHub",
          "username": "alexrivera",
          "url": "https://github.com/alexrivera"
        }
      ]
    },
    "work": [
      {
        "name": "Northwind Labs",
        "position": "Staff Product Engineer",
        "url": "https://northwind.example",
        "startDate": "2021-03-01",
        "summary": "Lead engineer for the applicant marketplace: matching, search ranking, and the hiring dashboard used by 4k weekly active recruiters.",
        "highlights": [
          "Cut time-to-shortlist from 9 days to 3 by rebuilding search around structured skills and recency.",
          "Designed a job-specific CV export pipeline so candidates can generate a tailored PDF in under a minute.",
          "Mentored a pod of 6 engineers; introduced RFC reviews that reduced production incidents by 40%."
        ]
      },
      {
        "name": "Harbor Analytics",
        "position": "Senior Software Engineer",
        "url": "https://harbor.example",
        "startDate": "2017-06-01",
        "endDate": "2021-02-01",
        "summary": "Owned the customer-facing reporting product used by mid-market ops teams.",
        "highlights": [
          "Shipped a saved-view system that became 70% of weekly sessions.",
          "Replaced a nightly batch job with streaming aggregates, dropping dashboard lag from 24h to under 2 minutes.",
          "Partnered with CS to turn the top 12 support tickets into self-serve filters."
        ]
      },
      {
        "name": "Brightline Studio",
        "position": "Software Engineer",
        "url": "https://brightline.example",
        "startDate": "2014-08-01",
        "endDate": "2017-05-01",
        "summary": "Full-stack engineer on client web apps for education and local commerce.",
        "highlights": [
          "Built the first public API and docs site; 30 agencies integrated in the first quarter.",
          "Introduced end-to-end tests that caught checkout regressions before launch."
        ]
      }
    ],
    "education": [
      {
        "institution": "University of Texas at Austin",
        "url": "https://www.utexas.edu/",
        "area": "Computer Science",
        "studyType": "B.S.",
        "startDate": "2010-08-01",
        "endDate": "2014-05-01"
      }
    ],
    "skills": [
      {
        "name": "Product engineering",
        "level": "Master",
        "keywords": [
          "TypeScript",
          "Node.js",
          "React",
          "PostgreSQL",
          "search"
        ]
      },
      {
        "name": "Collaboration",
        "level": "Advanced",
        "keywords": [
          "RFCs",
          "mentoring",
          "design pairing",
          "incident review"
        ]
      }
    ],
    "projects": [
      {
        "name": "Open Skills Graph",
        "startDate": "2022-01-01",
        "description": "Open dataset mapping job titles to skills for resume tailoring and job matching experiments.",
        "highlights": [
          "Used by three hiring-tool prototypes to re-rank CVs against a job description."
        ],
        "url": "https://github.com/alexrivera/open-skills-graph"
      }
    ],
    "languages": [
      {
        "language": "English",
        "fluency": "Native speaker"
      },
      {
        "language": "Spanish",
        "fluency": "Professional working"
      }
    ],
    "certificates": [
      {
        "name": "AWS Certified Solutions Architect – Associate",
        "date": "2023-04-12",
        "issuer": "Amazon Web Services",
        "url": "https://aws.amazon.com/certification/"
      }
    ]
  },
  "theme": "even",
  "format": "A4",
  "printBackground": true
}' |
apify call rainminer/json-resume-to-pdf --silent --output-dataset

```

## MCP server setup

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

```

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/XxCqx08FJwkmG1O10/builds/8eQy0rSJJBrBYlyWF/openapi.json
