# Dynamic QR Code Generator – One Tap QR (`u-things/dynamic-qr-codes`) Actor

Create and update dynamic QR codes, then read their scan counts.
$10 per code. $0.50 per change. No subscription.

- **URL**: https://apify.com/u-things/dynamic-qr-codes.md
- **Developed by:** [Franco Soldera](https://apify.com/u-things) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10,000.00 / 1,000 create an editable qr codes

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/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

## Dynamic QR Code Generator for AI Agents

![One Tap QR icon](https://onetapqr.com/assets/apify/otqr-icon-96.png)

One Tap QR is a dynamic QR code generator your AI agent runs for you. Ask for a code, print it, and change the link it opens anytime, without reprinting.

**Dynamic QR codes that never expire.**\
**No subscription.**

**Ask your AI agent for a code. $10 per code. $0.50 per change.**

**Add to your AI agent.** No web form. Works through MCP.

You’ll buy on Apify. Apify’s Standard Actor Contract and our terms apply. [Terms](#terms) · [Privacy](#privacy)

No sign-up with us. You create and manage every code by chatting with your AI agent.

![Example chat. You: “Make a QR code for our menu at example-bistro.com/menu.” Your AI agent: “Done. Here’s your QR code as a print-ready SVG. It points to example-bistro.com/menu, and you can change that anytime.” Attached: spring-menu.svg, $10.00, paid once.](https://onetapqr.com/assets/apify/otqr-agent-chat.png)

*The code in this chat is a real One Tap QR code: plain black on white, with a clear margin. Scan it and it opens this page.*

Change the link any time, without reprinting.

***

### How it works

1. **Add the tool to your agent**\
   Add One Tap QR to any AI agent that supports MCP, like Claude. You paste one server address into its settings.
2. **Ask for a code to a URL**\
   Say where the code should go. Your agent hands you a print-ready file.\
   Links must start with https:// and pass Google's safety check.
3. **Repoint it anytime**\
   Menu changed? Ask your agent to send the same printed code to a new page.

![The Quiet Zone Diner demo menu, opened from a One Tap QR demo code. A banner at the top says: You just scanned a One Tap QR demo code. The owner can change where the code goes, without reprinting it.](https://onetapqr.com/assets/apify/quiet-zone-diner-demo.jpg)

#### Try it first with test codes

- Each Apify account can create up to 5 test codes in total, ever. Deleted and expired test codes still count. Need more? Email `contact@u-things.com` to ask for an exception. We look at each request.
- A test code stops working 48 hours after it’s made.
- When someone scans a test code, they see a notice page first that says it’s a test code. Then they can continue to your link.
- After 48 hours, the test code and everything about it is deleted.

Test codes are for trying the service. Don’t print them.

***

### How much does a dynamic QR code cost?

Most dynamic QR code tools charge a subscription. Typically that’s about $7–25 a month, usually paid a year upfront, so about $100–300 a year.

| | Price | Source |
|---|---|---|
| QR Code Generator (by Bitly), Starter | $19.99 a month, or $119.88 a year billed yearly, for 2 dynamic codes | QR Code Generator pricing page |
| QR TIGER, Regular | $7 a month, for 12 dynamic codes | QR TIGER pricing page |
| One Tap QR | $10 per code, once, plus $0.50 per change | This page |

Several vendors’ own terms say codes stop working or redirect when the plan ends: QR Code Generator’s support center, QR TIGER’s FAQ and Uniqode’s pricing FAQ all say so. Vendor prices were checked on November 1, 2026, without tax, and can change.

***

### Pricing

#### Pay only for what you use

All billing runs through Apify. No subscription, no monthly fee.

**Per QR code: $10.00.** Paid once. The code keeps working.

| | | Price |
|---|---|---|
| **Change the link (repoint)** | Send a printed code to a new web address. | $0.50 |
| **Get a code’s scan counts** | Fetch the statistics for a code, day by day, for the last 12 months (rolling). | $0.05 |
| **List your codes** | See every code you own and where it points. | Free |
| **Download it again** | Get any code again as SVG, PNG or JPEG. | Free |

### Our shutdown guarantee

Your code works as long as One Tap QR runs. If U-Things closes or Apify stops selling One Tap QR, your codes keep working for 1 more year after our notice, and changing their link is free during that year. After that year, the links stop working. This promise is U-Things’ own, and it still applies if the Actor is unpublished. We give notice on the Actor’s Apify page, in its Issues tab, by email through Apify, and as a banner on the One Tap QR website. We don’t set aside money per code to run them after that year. We won’t use a change to shorten the 1-year shutdown period for codes you already bought.

You pay Apify for your usage at the prices shown on this page. There are no refunds, except as required by law. One Tap QR is offered for business use, like the Apify platform itself. If you are nevertheless a consumer in the EU, your contract for this Actor is with U-Things, not Apify. You can withdraw within 14 days of buying a code: email `contact@u-things.com` with the code ID and we refund what you paid for it. The code then stops working and is deleted.

***

### Run it through the Apify API

You can also run One Tap QR through the Apify API with your Apify API token. It takes the same input as the MCP tool, like `action` and `destinationUrl`, and the same prices apply.

```text
POST https://api.apify.com/v2/acts/u-things~dynamic-qr-codes/runs?token=<YOUR_APIFY_TOKEN>

{"action":"list_qr_codes"}
```

Because it’s an Apify Actor, you can also run it from Make, Zapier or n8n with Apify’s own integrations.

***

### MCP tool

Paste this server address into your AI agent’s MCP settings:

```text
https://mcp.apify.com?tools=u-things/dynamic-qr-codes
```

Then just ask in plain words, for example:

```text
You: Make a QR code for our menu at example-bistro.com/menu.
You: Send my Spring menu code to example-bistro.com/summer.
```

Tool: `u-things/dynamic-qr-codes`. Make QR codes you can point to a new link later, change their link, and get their scan counts. Paid actions are billed by Apify per call; listing and re-downloading your codes is free. No subscription, no monthly fee.

| `action` | What it does | Price |
|---|---|---|
| `create_dynamic_qr` | Makes one editable QR code that opens your https:// link (`destinationUrl`), once the link passes our checks. | $10 per code |
| `update_qr_destination` | Changes the page an existing editable code opens (`codeId` and `destinationUrl`). | $0.50 per change |
| `get_qr_scans` | Returns daily scan counts for one code, for the last 12 months. Counts are approximate. | $0.05 per call |
| `list_qr_codes` | Lists your codes and their current links. | No charge |
| `redownload_qr` | Gives you a new download link for a code’s image. | No charge |

`destinationUrl`: https:// URL the code opens. Other schemes, IP addresses, localhost, private network addresses and links with login details are refused. Every link is checked with Google Web Risk; if the check can’t run, we refuse the link until it can.

`mode` (optional): “test” or “live”. Default “live”. Use “test” to try the service. Test codes are never charged. The limits are under [Try it first with test codes](#try-it-first-with-test-codes).

Refusal messages in tool output:

- This link doesn’t start with https://. Use the https:// address of the page.
- We can’t use this link. Use a public web address, like `https://example.com`, with no IP address or login details in it.
- We couldn’t check this link for safety right now, so we can’t use it yet. Try again in a few minutes.
- You’ve used all 5 test codes for this Apify account. To keep going, make an editable code, or email `contact@u-things.com` to ask for an exception.
- You’ve made 10 test codes in the last hour. Try again later.

#### Output

```json
{
  "action": "create_dynamic_qr",
  "ok": true,
  "id": "ua2ma2tba2",
  "scanUrl": "https://onetapqr.com/c/ua2ma2tba2",
  "qrImageUrl": "https://onetapqr.com/api/actor/codes/ua2ma2tba2/qr.png",
  "destinationUrl": "https://example.com/spring-menu",
  "label": "Spring menu",
  "format": "png",
  "createdAt": "2026-10-31T08:49:00.000Z",
  "fileUrl": "https://api.apify.com/v2/key-value-stores/<run-store-id>/records/ua2ma2tba2.png"
}
```

A test code (`"mode": "test"`) returns the same fields, but `scanUrl` is `https://onetapqr.com/t/<id>`, `qrImageUrl` is under `/api/actor/test-codes/<id>/`, and the item carries `"notice": "TEST: stops working in 48h, all data deleted."`

- `scanUrl`: The short link inside your QR code. Scanning it opens your destination, and you can change the destination without reprinting.
- `scanUrl` (test code): The short link inside your test QR code. See [Try it first with test codes](#try-it-first-with-test-codes).
- `qrImageUrl`: Download link for your QR code image, ready to print or share.
- `fileUrl`: A copy of the QR image saved in this run's key-value store.
- `createdAt`: When the code was created (ISO 8601, UTC).

***

### Q\&A

#### What is a dynamic QR code?

A dynamic QR code is a QR code whose link you can change after it’s printed. The code holds a short link, and the short link sends each scan to the page you choose. One Tap QR makes them for $10 per code.

#### Do dynamic QR codes expire?

Ours don’t. Many subscription tools stop a code when the plan ends, but a One Tap QR code keeps working for as long as One Tap QR runs, with no renewal fee. If U-Things closes or Apify stops selling One Tap QR, your codes keep working for 1 more year after our notice, and changing their link is free during that year.

#### How do I change a QR code link?

Ask your AI agent to change it, for example: “Send my Spring menu code to example-bistro.com/summer.” The printed code stays the same, so you don’t reprint. Each change costs $0.50.

#### What is MCP?

MCP is the standard way AI agents plug in outside tools, so your agent can make and change codes for you.

#### How do I connect to One Tap QR?

Add our MCP server address to your agent’s settings. Billing runs through your Apify account. Server URL: `https://mcp.apify.com?tools=u-things/dynamic-qr-codes`

#### How do I get the statistics for a code?

Ask your agent for the stats. It fetches the statistics for a code, day by day, for the last 12 months (rolling). Each fetch costs $0.05.

#### Why are there no colors or logos?

Every code is a plain, high-contrast black-and-white QR code. Styled designer codes scan less reliably, and a printed code has to work on the first try.

#### Which file formats do I get?

SVG, PNG or JPEG, your choice. Every format is plain black on white and print-ready; SVG is the default. You can re-download any code in another format at any time, for free.

#### Which links can a code open?

Codes can only point to secure web pages: the link must start with https://. This applies to test codes too, and when you update a link.

We also check every new or changed link against Google Web Risk, Google’s lists of unsafe sites. If the check can’t run, we refuse the link until it can. We don’t accept IP addresses, localhost, private network addresses or login details in a link.

#### Do I need an account with you?

No sign-up with us. We know you by your Apify account, not your email.

#### How do I report a code?

Open an issue on this Actor’s Issues tab, or email `contact@u-things.com`, with the code’s link, why you think it is illegal or breaks these rules, your name and email (unless you report child sexual abuse material), and a statement that you believe your report is accurate. We confirm receipt and tell you what we decided. We answer every issue within 14 days, aim to reply within 2 working days, and act on phishing and malware as soon as we confirm it.

***

### Why us

#### A code you don’t have to reprint

**Plain codes are built to scan on the first try.**

Codes are plain black on white. We follow the GS1 barcode guidelines, but we can’t promise a code scans if it’s damaged, badly printed, printed too small, or changed after download.

**Prints sharp at any size.**
The SVG file is vector, so the code stays crisp on anything from a table card to a poster.

#### Why us, and what it means for your customer

**No subscription, ever.**
A code costs $10 once. There’s no plan to renew and nothing that switches off when a card expires. Listing your codes and downloading them again as SVG, PNG or JPEG is free.

**No reprint when the link changes.**
Menu changed? New campaign? Change the link any time, without reprinting. The printed code stays the same, and each change costs $0.50.

**We follow the barcode standard.**
Every code follows GS1, the global barcode standards body: black on white, strong contrast, and a full blank margin.

**Plain looks plainer. It also fails less.**
A plain code doesn’t fight the client’s colors or logo, and it’s the same file every time. QR codes in real life get worn. They get scratched, faded and sun-bleached, and every QR code has built-in error correction that restores data when a code is dirty or damaged. A logo or artwork over the code uses up part of that safety margin before it’s even printed, so a plain code has more of it left when the print starts to wear. Let the layout carry the brand and let the code do its one job.

**Proof it’s working.**
Fetch daily scan counts for any code, for the last 12 months, for $0.05. That’s a number for the client’s report.

**Your AI agent does the busywork.**
Ask your agent for a code, a link change or last month’s scans, and it handles it through MCP. No extra dashboard to learn.

**When we’re not the right fit.**
The code opens through our short link, and some people hesitate before opening a link they don’t recognize. And if you run your own domain, you can set up redirects and UTM tags yourself for free. Free isn’t the same as no work, though. Your domain has to be renewed for as long as the print is out there, and the redirect has to survive every website redesign and hosting move. Each change means checking your domain, server and redirect again, and when the person who set it up leaves, that burden lands on whoever’s left. With us, keeping the redirect running is our job, not yours.

***

### Questions?

Learn more at [onetapqr.com](https://onetapqr.com).

Questions? Email `contact@u-things.com`. A person reads every message.

***

### Terms

**How these terms work.**
Your use of this Actor is governed by Apify’s Standard Actor Contract. The commitments below are ours, and they add to that contract. Where they give you more, they apply.

**Who we are.**
One Tap QR is made by Franco Soldera, an individual trading as U-Things, in Denmark. Address: Drejøgade 26C, 2100 København Ø, Denmark. Contact: `contact@u-things.com`.

**What you get.**
QR codes that send each scan to a link you choose. You can change that link any time.

**Paying.**
You pay Apify for your usage at the prices shown on this page. There are no refunds, except as required by law. One Tap QR is offered for business use, like the Apify platform itself. If you are nevertheless a consumer in the EU, your contract for this Actor is with U-Things, not Apify. You can withdraw within 14 days of buying a code: email `contact@u-things.com` with the code ID and we refund what you paid for it. The code then stops working and is deleted.

**Price changes.**
A price increase takes effect 14 days after we announce it, and we raise prices at most once a month.

**How long codes work.**
Your code works as long as One Tap QR runs. If U-Things closes or Apify stops selling One Tap QR, your codes keep working for 1 more year after our notice, and changing their link is free during that year. After that year, the links stop working. This promise is U-Things’ own, and it still applies if this Actor is unpublished. We give notice in this README, in the Actor’s Issues tab, by email through Apify, and as a banner on the One Tap QR website. We don’t set aside money per code to run them after that year. We won’t use a change to shorten the 1-year shutdown period for codes you already bought.

**What codes look like.**
Codes are plain black on white. We follow the GS1 barcode guidelines, but we can’t promise a code scans if it’s damaged, badly printed, printed too small, or changed after download.

**What you can’t link to.**
Don’t point a code at phishing, malware, scams or illegal content (see Acceptable use). If a code breaks these rules, we may disable it or point it to a notice page, without a refund. When we do, we tell you which code, what we did, the facts behind it and whether it was found by an automated check (such as Google Web Risk) or a report, which rule or law it breaks, and how to object. We look at every objection, and you can also go to court.

**Liability.**
We do our best to keep codes working, but the service is provided as is. Our total liability to you is limited to the greater of what you paid or USD 100. Nothing here limits liability for death or personal injury caused by negligence, for fraud or fraudulent misrepresentation, or for anything else the law doesn’t allow us to limit. Warranties that can’t legally be excluded aren’t excluded. If you’re a consumer, the consumer protection laws of your country still apply to you.

**Ending access.**
We end your access to codes you bought only for abuse or a legal order.

**Changes.**
We publish updates to these terms on this Actor’s Store page, dated. We won’t use a change to shorten the 1-year shutdown period for codes you already bought.

**The rest.**
These terms are in English. If one part turns out to be invalid, the rest still applies.

### Privacy

**Who’s responsible.**
Franco Soldera, trading as U-Things, Denmark. Contact: `contact@u-things.com`.

**The links you enter.**
We process the links you enter as Actor input only to run the service for you. For those, we act as your processor.

When someone scans one of your codes, we are responsible for the scan data (the controller), and we store:

- which code was scanned, and when
- the country, plus an estimated city and region (Cloudflare works these out from the IP address)
- the device type: mobile, tablet or desktop

We don’t store the IP address, the browser details, or anything that identifies the person who scanned. Cloudflare, which runs our redirects and blocks abuse, sees each visitor’s IP address while it handles the request, on our behalf. Scan counts are approximate.

We use scan data only to count scans and show you statistics. We don’t sell it, and we don’t build profiles of people who scan. You see only totals, never individual scans.

**Abuse limits.**
To prevent abuse, we limit how often each buyer can use the service, and we keep one overall counter. For this we keep a hashed version of your Apify account ID, never an IP address, and overwrite it each time window. There is no sign-in.

**How long we keep it.**
We keep individual scan records for 90 days. After that we keep only one total per code per day, for a rolling 12 months. Test codes are deleted after 48 hours; a log of abuse-related events for test codes is kept for 6 months. When a code ends, or after the shutdown year, we delete everything for that code within 30 days. If you ask us to delete your data, we do it within 30 days.

**Test codes.**
Test codes are separate from regular codes and kept in their own storage. Each Apify account can create up to 5 test codes in total, ever. Deleted and expired test codes still count. To enforce this, we keep a small counter per Apify account: a one-way hashed form of your Apify user ID and how many test codes you’ve made. We keep it for as long as One Tap QR runs, and nothing else about your test codes is kept beyond the stated period. Need more? Email `contact@u-things.com` to ask for an exception. We look at each request. They stop working after 48 hours.

When someone scans a test code, we store the scanner’s IP address, network, approximate location, browser, and connection (TLS) details. We keep these for 48 hours to prevent abuse (our legitimate interest), then delete them for good, along with the code.

To deal with abuse, we keep a short record for 6 months: the code, its destination, a hashed Apify account ID, a hashed IP address, the network and the time. Then we delete it.

**Buyers.**
We know you by your Apify account, not by your email. We store your codes, their links and their scan counts. This Actor runs with Apify’s limited permissions, so it sees only its own runs and storage, the input you give it, and basic account information Apify passes to every Actor (your Apify user ID, and whether you are a paying user). It cannot see other data in your Apify account. Apify does not give us your payment details. Apify may show us your Apify username in our run statistics. Don’t put personal data in the links your codes point to. If you do, you’re responsible for it.

**Who processes data for us:**

- Cloudflare (redirects, scan data)
- Apify (sales, accounts, payment)
- Google (Google Web Risk link safety checks: links you enter are checked against Google’s lists of unsafe sites. If the check can’t run, we refuse the link until it can.)

Cloudflare and Google are US companies. Cloudflare is certified under the EU-U.S. Data Privacy Framework, and its data processing addendum, which includes the EU standard contractual clauses as a fallback, applies to our use. Google is certified under the EU-U.S. Data Privacy Framework, and Google Cloud’s data processing terms apply to our use of Web Risk.

**Legal basis.**
Running the service for you relies on our contract with you (GDPR art. 6(1)(b)). Scan statistics, abuse limits, the abuse log and link safety checks rely on our legitimate interest in providing statistics to code owners and keeping the service safe (GDPR art. 6(1)(f)).

**Your rights.**
You can ask to see, correct or delete your data, object to its use, or move it elsewhere. Email `contact@u-things.com` and we’ll answer within one month. For data Apify holds about your account, ask Apify. You can also complain to the Danish Data Protection Agency (Datatilsynet).

### Acceptable use

One Tap QR codes must not point to:

- phishing or fake login pages
- malware or unwanted downloads
- scams or fraud
- illegal content, or content that infringes someone else’s rights

If a code breaks these rules, we may disable it or point it to a notice page. Warnings based on Google data are labeled “suspected”, carry “Advisory provided by Google”, and are not a guarantee of safety.

**Report a code.**
Open an issue on this Actor’s Issues tab, or email `contact@u-things.com`, with the code’s link, why you think it is illegal or breaks these rules, your name and email (unless you report child sexual abuse material), and a statement that you believe your report is accurate. We confirm receipt and tell you what we decided. We answer every issue within 14 days, aim to reply within 2 working days, and act on phishing and malware as soon as we confirm it.

**Point of contact.**
For authorities and users under the EU Digital Services Act: `contact@u-things.com`, in English or Danish. Email reaches us directly, and a person answers, not only an automated tool.

### Imprint

One Tap QR is made by Franco Soldera, trading as U-Things, Denmark.

Contact: `contact@u-things.com`

Address: Drejøgade 26C, 2100 København Ø, Denmark

# Actor input Schema

## `action` (type: `string`):

What to do with an editable QR code. Create needs destinationUrl (label and format optional). Change a code’s link needs codeId and destinationUrl. Get scan counts needs codeId. List codes needs nothing else. Download the QR file again needs codeId (format optional).

## `destinationUrl` (type: `string`):

Page the code opens. Required for create and update.

## `label` (type: `string`):

Optional text drawn under the code. It is not part of the QR payload.

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

File format for create and redownload.

## `codeId` (type: `string`):

Id returned when the code was created. Required for update, scans, and redownload.

## `mode` (type: `string`):

Live codes stay until the service ends. Test codes stop working 48 hours after they are made, and their data is deleted. Each Apify account can make 5 test codes in total, including deleted codes.

## Actor input object example

```json
{
  "action": "list_qr_codes",
  "destinationUrl": "https://example.com",
  "format": "png",
  "mode": "test"
}
```

# Actor output Schema

## `scanUrl` (type: `string`):

The short link inside your QR code. Scanning it opens your destination, and you can change the destination without reprinting.

## `qrImageUrl` (type: `string`):

Download link for your QR code image, ready to print or share.

## `createdAt` (type: `string`):

When the code was created (ISO 8601, UTC).

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

Every result row from this run, as JSON: the action, whether it worked, the code’s id, links, scan counts or an error message.

# 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 = {
    "action": "list_qr_codes",
    "destinationUrl": "https://example.com",
    "format": "png",
    "mode": "test"
};

// Run the Actor and wait for it to finish
const run = await client.actor("u-things/dynamic-qr-codes").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 = {
    "action": "list_qr_codes",
    "destinationUrl": "https://example.com",
    "format": "png",
    "mode": "test",
}

# Run the Actor and wait for it to finish
run = client.actor("u-things/dynamic-qr-codes").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 '{
  "action": "list_qr_codes",
  "destinationUrl": "https://example.com",
  "format": "png",
  "mode": "test"
}' |
apify call u-things/dynamic-qr-codes --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,u-things/dynamic-qr-codes"
        }
    }
}
```

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/ERfhoylX8E5z1xPSg/builds/LeIKGcFuq4dESdhVL/openapi.json
