QR Code & Barcode Generator and Reader (EAN, Code128)
Pricing
from $1.05 / 1,000 codes
QR Code & Barcode Generator and Reader (EAN, Code128)
Generate QR codes and barcodes (EAN-13, EAN-8, UPC-A, Code 128, Code 39, ITF, Data Matrix) as PNG or SVG with public links, or read them from image URLs: text, type and position. Check digits, colors, bulk. Pure calculation, no external data source.
Pricing
from $1.05 / 1,000 codes
Rating
0.0
(0)
Developer
br_data_hub
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
Generate and read QR codes and barcodes in bulk. Turn text into PNG and SVG files with a public link for each one, or give image URLs and get back the text, the code type and the position of every code found in them. Supported: QR Code, EAN-13, EAN-8, UPC-A, Code 128, Code 39, ITF (Interleaved 2 of 5) and Data Matrix.
It is pure calculation: no website is scraped and no external data source is used. Your texts and images are processed inside the run and nothing is kept outside your own storages.
What you can do with it
- Print-ready labels: thousands of EAN-13 or Code 128 product barcodes from a list of SKUs, with the check digit added for you.
- Marketing and events: QR codes for URLs, Wi-Fi access (
WIFI:T:WPA;S:name;P:password;;), vCards, payment links or tickets, in your brand colors. - Inventory and logistics: read the codes from photos of shelves, labels and delivery notes, with the position of each code in the image.
- Data cleaning: check what a code really contains, and whether the barcode digits are valid.
Input
Choose a mode.
| Field | Mode | Description |
|---|---|---|
mode | both | generate (text to image files) or decode (images to text). |
texts | generate | Texts to encode, one per line (up to 5,000 per run). They all use barcodeType. |
barcodeType | generate | qr (default), ean13, ean8, upca, code128, code39, itf or datamatrix. |
codes | generate | Optional objects {"text": "...", "type": "..."} to mix types in one run. |
imageFormats | generate | png, svg or both (default both). |
errorCorrection | generate | QR only: L, M (default), Q or H. |
scale | generate | Pixels per module, 1 to 40 (default 6). |
foregroundColor, backgroundColor | generate | Hex colors, default black on white. The Actor warns about low contrast and inverted colors. |
quietZone | generate | Blank margin around the code (default on). |
humanReadableText | generate | Print the digits under linear barcodes (default on). |
includeDataUri | generate | Also return the PNG as a base64 data URI in each item. |
keyValueStoreName | generate | Save the files in a named store, which is kept until you delete it. |
imageUrls | decode | Image links (PNG, JPEG, GIF, WebP, BMP, TIFF), one per line, up to 2,000. data:image/...;base64, links also work. |
decodeFormats | decode | Read only these types. Empty reads all of them. |
maxCodesPerImage | decode | Most codes returned and charged per image (default 20). |
The default input generates four codes (two QR codes, an EAN-13 and a Code 128) and finishes in seconds. To try the reader, run the Actor once with includeDataUri on, or paste any public image link into imageUrls with mode set to decode.
Barcode rules. EAN-13, EAN-8 and UPC-A accept 12, 7 or 11 digits (the check digit is added) or the full 13, 8 or 12 digits, which are verified: a wrong check digit gives a clear error. ITF needs an even number of digits (a leading 0 is added to an odd one). Code 39 accepts capital letters, digits, space and - . $ / + % (lower case is converted). Code 128 accepts Latin-1 text.
Output
One dataset item per code. In generate mode:
{"input": "https://apify.com","type": "qr","status": "generated","text": "https://apify.com","format": "QR Code","width": 198,"height": 198,"pngUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/qr-0001.png","svgUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/qr-0001.svg","generatedAt": "2026-11-05T15:12:27+00:00"}
The files are saved in the run's key-value store as <type>-<number>.png and .svg, and the links in pngUrl and svgUrl open them directly. status is generated, duplicate (same text and type as an earlier item, see duplicateOf) or error (see error). note tells what the Actor changed, for example Check digit 7 added., or warns about colors scanners may not read.
In decode mode each code found is one item:
{"imageUrl": "https://example.com/label.png","status": "decoded","codeIndex": 1,"codesInImage": 1,"text": "5901234123457","format": "EAN13","formatLabel": "EAN-13","contentType": "text","valid": true,"position": {"topLeft": {"x": 24, "y": 40},"topRight": {"x": 310, "y": 40},"bottomRight": {"x": 310, "y": 118},"bottomLeft": {"x": 24, "y": 118}},"orientation": 0,"errorCorrection": null,"imageWidth": 640,"imageHeight": 480,"decodedAt": "2026-11-05T15:12:27+00:00"}
position is in pixels of the original image; orientation is the rotation in degrees. Binary content comes with bytesBase64. An image with no readable code gives one item with status: "no_code_found", and an image that could not be downloaded or opened gives status: "error"; neither is charged.
How much does it cost?
Pay per event: one code event per QR code or barcode generated, or per code read from an image (PNG and SVG together are one charge). Errors, duplicates and images without a code are free. Set Maximum cost per run to cap spending; the Actor stops cleanly when it is reached.
The price, US$ 0.0015 per code (US$ 1.50 per 1,000), was set below the other QR code Actors in the Store, which charge about US$ 2 to US$ 10 per 1,000 images. Compute is tiny (a QR code takes a few milliseconds and the Actor runs at 512 MB), so the price is far above the cost of running it.
$0.0015 per code (code event, pay per event). Charged once per QR code or barcode generated, or per code read from an image. Errors, duplicates and images with no code are free.
apify-actor-start: $0.00005 (Charged once when a run starts (Apify synthetic event).)
| You get | Free tier | Bronze tier (10% off) | Gold tier (30% off) |
|---|---|---|---|
| 100 codes | $0.15 | $0.14 | $0.10 |
| 1,000 codes | $1.50 | $1.35 | $1.05 |
| 10,000 codes | $15.00 | $13.50 | $10.50 |
Discounts follow your Apify subscription tier: Bronze 10%, Silver 20%, Gold and above 30%. No subscription to this Actor and no charge for platform usage: you pay only for results. The Apify Free plan includes $5 of monthly credit, enough for about 3,333 codes at the list price. You can cap the cost of any run with Maximum cost per run; the Actor stops when it is reached.
Data source and limits
There is no external data source. Codes are drawn and read with ZXing-C++ (Apache 2.0, whose writer is built on Zint, BSD) and images are handled with Pillow. Decode mode only downloads the image links you give it.
- Up to 5,000 codes (generate) or 2,000 images (decode) per run; an image can be up to 15 MB. Larger jobs: run again with the next batch.
- QR text up to 2,900 characters, Data Matrix up to 1,500, Code 128 up to 200.
- Reading depends on image quality. Blurry, tiny, glared or cropped codes may not be found; the Actor also tries other rotations, inverted colors, a second threshold method and enlarges small images. A code that is not found is free, so you can retry with a better picture.
- Not supported: PDF417, Aztec, GS1 DataBar, Codabar and 2D codes with logos (put the logo on the SVG yourself and use error correction
H). Check that a printed code scans with your own device before a large print run. - Links to files in the default key-value store follow your Apify data-retention period; use
keyValueStoreNamefor longer storage.
Use it via API
Run it from any language and get the results as JSON. Replace <YOUR_API_TOKEN> with your Apify API token.
curl -X POST "https://api.apify.com/v2/acts/br_data_hub~qr-barcode-toolkit/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"mode": "generate", "texts": ["https://apify.com", "WIFI:T:WPA;S:OfficeGuest;P:welcome2026;;"], "barcodeType": "qr", "codes": [{"text": "5901234123457", "type": "ean13"}, {"text": "SKU-2026-001", "type": "code128"}], "imageFormats": ["png", "svg"], "errorCorrection": "M", "scale": 6, "foregroundColor": "#000000", "backgroundColor": "#FFFFFF", "quietZone": true, "humanReadableText": true, "maxCodesPerImage": 20}'
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("br_data_hub/qr-barcode-toolkit").call(run_input={'mode': 'generate','texts': ['https://apify.com', 'WIFI:T:WPA;S:OfficeGuest;P:welcome2026;;'],'barcodeType': 'qr','codes': [{'text': '5901234123457', 'type': 'ean13'},{'text': 'SKU-2026-001', 'type': 'code128'}],'imageFormats': ['png', 'svg'],'errorCorrection': 'M','scale': 6,'foregroundColor': '#000000','backgroundColor': '#FFFFFF','quietZone': True,'humanReadableText': True,'maxCodesPerImage': 20})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
You can also schedule runs, send results to webhooks, or connect the Actor to Make, Zapier, n8n, Google Sheets and other integrations.
Use it with AI agents (MCP)
This Actor is ready for AI agents: typed input and output schemas, pay-per-event pricing, limited permissions and short runs.
- Apify MCP server: add
https://mcp.apify.com/?tools=br_data_hub/qr-barcode-toolkitto Claude, ChatGPT, Cursor, VS Code or any MCP client, and the agent can call this Actor as a tool. - Agent frameworks: call it from LangChain, LlamaIndex, CrewAI or the OpenAI Agents SDK through the Apify integrations, or with the API call above.
- Results come as structured JSON with stable field names, documented in the Output tab.
FAQ
Where does the data come from?
There is no external data source. Codes are drawn and read with ZXing-C++ (Apache 2.0, whose writer is built on Zint, BSD) and images are handled with Pillow. Decode mode only downloads the image links you give it.
How much does it cost?
$0.0015 per code. Discounts follow your Apify subscription tier: Bronze 10%, Silver 20%, Gold and above 30%. See How much does it cost? above for examples.
Do I pay for errors or empty results?
No. Charged once per QR code or barcode generated, or per code read from an image. Errors, duplicates and images with no code are free.
Can I run it on a schedule or connect it to other tools?
Yes. Use Apify schedules to run it daily or weekly, webhooks to get notified, and integrations such as Make, Zapier, n8n and Google Sheets. Everything also works through the API.
Can AI agents use it?
Yes. It works as a tool in the Apify MCP server and in agent frameworks, and AI agents can pay per event. See Use it with AI agents (MCP).
Is it legal to use this data?
The Actor reads only public sources. You are responsible for how you use the data and for complying with the source's terms and with privacy laws such as GDPR.
I found a bug or need a feature. What should I do?
Open an issue in the Issues tab. We answer within 14 days, usually much sooner.
More Actors from BR Data Hub
| Actor | What it does |
|---|---|
| Email Validator Bulk: MX, Disposable, Typo, No SMTP | Bulk validate e-mail addresses with DNS only: RFC syntax, domain and MX records, disposable domains, role acco |
| Website Tech Stack Detector (CMS, Analytics, CDN) | Find out what a website is built with: CMS, JavaScript frameworks, e-commerce platform, analytics, tag manager |
| Sitemap URL Extractor: Nested, Gzip, robots.txt, Filters | Extract every URL from a website's sitemaps: robots.txt discovery, nested indexes, .xml.gz, lastmod, priority, |
| Brazil CNPJ Lookup API (Consulta CNPJ) | Look up Brazilian companies by CNPJ: registration status, partners (masked CPF), activities, tax regime and sc |
See all our Actors at apify.com/br_data_hub.
Usar em português
Gere QR codes e códigos de barras (EAN-13, EAN-8, UPC-A, Code 128, Code 39, ITF e Data Matrix) em PNG e SVG, em lote, a partir de uma lista de textos, ou leia os códigos de imagens enviadas por URL e receba o texto, o tipo e a posição de cada um. Para EAN e UPC o dígito verificador é calculado ou conferido. Cobra-se só o código gerado ou lido (US$ 0,0015); erros, repetidos e imagens sem código são grátis. Não usa fonte externa de dados: é só cálculo.
Quanto custa: $0.0015 por resultado (code); 1.000 resultados saem por $1.50. Desconto pelo nível da assinatura Apify: Bronze 10%, Silver 20%, Gold ou acima 30%. Erros e consultas sem resultado não são cobrados. Use também pela API ou por agentes de IA no servidor MCP da Apify (https://mcp.apify.com/?tools=br_data_hub/qr-barcode-toolkit).