1from apify_client import ApifyClient
2
3
4
5client = ApifyClient("<YOUR_API_TOKEN>")
6
7
8run_input = {
9 "documents": [{
10 "id": "northwind-price-list-2026-10",
11 "base64Document": "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHlwZTEgL0Jhc2VGb250IC9IZWx2ZXRpY2EgL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0xlbmd0aCAxODYyID4+CnN0cmVhbQpCVCAvRjEgMTIgVGYgNDAuMDAgODEwLjAwIFRkIChOb3J0aHdpbmQgSW5kdXN0cmlhbCAtIHByaWNlIGxpc3QgT2N0b2JlciAyMDI2KSBUaiBFVApCVCAvRjEgOSBUZiA0MC4wMCA3ODAuMDAgVGQgKFNLVSkgVGogRVQKQlQgL0YxIDkgVGYgMTEwLjAwIDc4MC4wMCBUZCAoRGVzY3JpcHRpb24pIFRqIEVUCkJUIC9GMSA5IFRmIDM0MS4wMCA3ODAuMDAgVGQgKFF0eSkgVGogRVQKQlQgL0YxIDkgVGYgNDMxLjk5IDc4MC4wMCBUZCAoVW5pdCBwcmljZSkgVGogRVQKQlQgL0YxIDkgVGYgNTIzLjQ4IDc4MC4wMCBUZCAoTGluZSB0b3RhbCkgVGogRVQKQlQgL0YxIDkgVGYgNDAuMDAgNzYwLjAwIFRkIChIQy0yMDMyKSBUaiBFVApCVCAvRjEgOSBUZiAxMTAuMDAgNzYwLjAwIFRkIChIb3NlIGNsYW1wIDIwLTMyIG1tLCBzdGFpbmxlc3MpIFRqIEVUCkJUIC9GMSA5IFRmIDM0NC45OSA3NjAuMDAgVGQgKDUwKSBUaiBFVApCVCAvRjEgOSBUZiA0NTIuNDkgNzYwLjAwIFRkICgwLjg0KSBUaiBFVApCVCAvRjEgOSBUZiA1MzcuNDggNzYwLjAwIFRkICg0Mi4wMCkgVGogRVQKQlQgL0YxIDkgVGYgNDAuMDAgNzQwLjAwIFRkIChQRy0wMDEwKSBUaiBFVApCVCAvRjEgOSBUZiAxMTAuMDAgNzQwLjAwIFRkIChQcmVzc3VyZSBnYXVnZSAwLTEwIGJhciwpIFRqIEVUCkJUIC9GMSA5IFRmIDExMC4wMCA3MjkuNTAgVGQgKGdseWNlcmluZSBmaWxsZWQpIFRqIEVUCkJUIC9GMSA5IFRmIDM1MC4wMCA3NDAuMDAgVGQgKDQpIFRqIEVUCkJUIC9GMSA5IFRmIDQ0Ny40OCA3NDAuMDAgVGQgKDE4LjkwKSBUaiBFVApCVCAvRjEgOSBUZiA1MzcuNDggNzQwLjAwIFRkICg3NS42MCkgVGogRVQKQlQgL0YxIDkgVGYgNDAuMDAgNzA5LjUwIFRkIChCVi0wMDE1KSBUaiBFVApCVCAvRjEgOSBUZiAxMTAuMDAgNzA5LjUwIFRkIChCYWxsIHZhbHZlIDEvMiBpbmNoLCBicmFzcykgVGogRVQKQlQgL0YxIDkgVGYgMzQ0Ljk5IDcwOS41MCBUZCAoMTIpIFRqIEVUCkJUIC9GMSA5IFRmIDQ1Mi40OSA3MDkuNTAgVGQgKDcuNDUpIFRqIEVUCkJUIC9GMSA5IFRmIDUzNy40OCA3MDkuNTAgVGQgKDg5LjQwKSBUaiBFVApCVCAvRjEgOSBUZiA0MC4wMCA2ODkuNTAgVGQgKFNLLTAyMDApIFRqIEVUCkJUIC9GMSA5IFRmIDExMC4wMCA2ODkuNTAgVGQgKFNlYWwga2l0IGZvciBwdW1wIHNlcmllcyAyMDApIFRqIEVUCkJUIC9GMSA5IFRmIDM1MC4wMCA2ODkuNTAgVGQgKDMpIFRqIEVUCkJUIC9GMSA5IFRmIDQ0Ny40OCA2ODkuNTAgVGQgKDQyLjAwKSBUaiBFVApCVCAvRjEgOSBUZiA1MzIuNDggNjg5LjUwIFRkICgxNjIuMDApIFRqIEVUCkJUIC9GMSA5IFRmIDQwLjAwIDY2OS41MCBUZCAoRkwtMDU1MCkgVGogRVQKQlQgL0YxIDkgVGYgMTEwLjAwIDY2OS41MCBUZCAoRmlsdGVyIGNhcnRyaWRnZSA1IG1pY3JvbikgVGogRVQKQlQgL0YxIDkgVGYgMzQ0Ljk5IDY2OS41MCBUZCAoMjApIFRqIEVUCkJUIC9GMSA5IFRmIDQ1Mi40OSA2NjkuNTAgVGQgKDYuMTUpIFRqIEVUCkJUIC9GMSA5IFRmIDUzMi40OCA2NjkuNTAgVGQgKDEyMy4wMCkgVGogRVQKQlQgL0YxIDkgVGYgNDAuMDAgNjQ5LjUwIFRkIChQVC0xMjUwKSBUaiBFVApCVCAvRjEgOSBUZiAxMTAuMDAgNjQ5LjUwIFRkIChQdW1wIGltcGVsbGVyIDEyNSBtbSkgVGogRVQKQlQgL0YxIDkgVGYgMzUwLjAwIDY0OS41MCBUZCAoMSkgVGogRVQKQlQgL0YxIDkgVGYgNDM0Ljk3IDY0OS41MCBUZCAoMSwyNDkuMDApIFRqIEVUCkJUIC9GMSA5IFRmIDUyNC45NyA2NDkuNTAgVGQgKDEsMjQ5LjAwKSBUaiBFVApCVCAvRjEgOCBUZiA0MC4wMCA2MDkuNTAgVGQgKFByaWNlcyBpbiBFVVIgZXhjbHVkaW5nIFZBVC4gVmFsaWQgdW50aWwgMzEgRGVjZW1iZXIgMjAyNi4pIFRqIEVUCmVuZHN0cmVhbQplbmRvYmoKMyAwIG9iago8PCAvVHlwZSAvUGFnZSAvUGFyZW50IDQgMCBSIC9NZWRpYUJveCBbMCAwIDU5NSA4NDJdIC9Db250ZW50cyAyIDAgUiAvUmVzb3VyY2VzIDw8IC9Gb250IDw8IC9GMSAxIDAgUiA+PiA+PiA+PgplbmRvYmoKNCAwIG9iago8PCAvVHlwZSAvUGFnZXMgL0tpZHMgWzMgMCBSXSAvQ291bnQgMSA+PgplbmRvYmoKNSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgNCAwIFIgPj4KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAwMTEyIDAwMDAwIG4gCjAwMDAwMDIwMjUgMDAwMDAgbiAKMDAwMDAwMjE1MSAwMDAwMCBuIAowMDAwMDAyMjA4IDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNiAvUm9vdCA1IDAgUiA+PgpzdGFydHhyZWYKMjI1NwolJUVPRgo=",
12 }],
13 "targetSchema": {
14 "columns": [
15 {
16 "name": "sku",
17 "type": "string",
18 "required": True,
19 "aliases": [
20 "SKU",
21 "Item Code",
22 "Artikel",
23 "Art.nr.",
24 ],
25 },
26 {
27 "name": "description",
28 "type": "string",
29 "required": True,
30 "aliases": [
31 "Description",
32 "Omschrijving",
33 ],
34 },
35 {
36 "name": "quantity",
37 "type": "integer",
38 "required": True,
39 "aliases": [
40 "Qty",
41 "QTY",
42 "Aantal",
43 ],
44 },
45 {
46 "name": "unit_price",
47 "type": "number",
48 "required": True,
49 "aliases": [
50 "Unit price",
51 "Unit Price",
52 "Prijs",
53 ],
54 },
55 {
56 "name": "line_total",
57 "type": "number",
58 "required": True,
59 "aliases": [
60 "Line total",
61 "Total",
62 "Totaal",
63 ],
64 },
65 ],
66 "uniqueBy": ["sku"],
67 "allowUnexpectedColumns": False,
68 "arithmeticChecks": [{
69 "operands": [
70 "quantity",
71 "unit_price",
72 ],
73 "operator": "multiply",
74 "result": "line_total",
75 "tolerance": 0.01,
76 }],
77 },
78 "options": {
79 "caseInsensitiveHeaders": True,
80 "trimValues": True,
81 "emptyStringIsNull": True,
82 "failOnAnyRejectedRow": False,
83 "numberFormat": "auto",
84 "dateFormat": "auto",
85 },
86}
87
88
89run = client.actor("first_watch/pdf-table-extraction").call(run_input=run_input)
90
91
92print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
93for item in client.dataset(run.default_dataset_id).iterate_items():
94 print(item)
95
96