1from apify_client import ApifyClient
2
3
4
5client = ApifyClient("<YOUR_API_TOKEN>")
6
7
8run_input = {
9 "source": {
10 "type": "inlineCsv",
11 "delimiter": ",",
12 "csv": """Customer Email,Full Name,Signup Date,Status
13 ALICE@EXAMPLE.COM ,alice smith,31/01/2026, active
14bad-address,Bob Jones,2026-02-15,pending""",
15 },
16 "columns": [
17 {
18 "target": "email",
19 "type": "email",
20 "sources": [
21 "Customer Email",
22 "Email",
23 ],
24 "required": True,
25 "trim": True,
26 "case": "lower",
27 },
28 {
29 "target": "name",
30 "type": "string",
31 "sources": ["Full Name"],
32 "required": True,
33 "trim": True,
34 "case": "title",
35 },
36 {
37 "target": "signup_date",
38 "type": "date",
39 "sources": ["Signup Date"],
40 "required": True,
41 "dateFormats": [
42 "DD/MM/YYYY",
43 "YYYY-MM-DD",
44 ],
45 "outputDateFormat": "YYYY-MM-DD",
46 },
47 {
48 "target": "status",
49 "type": "string",
50 "sources": ["Status"],
51 "required": True,
52 "trim": True,
53 "case": "lower",
54 "allowedValues": [
55 "active",
56 "inactive",
57 ],
58 },
59 ],
60 "deduplicationKeys": ["email"],
61 "unknownColumns": "drop",
62}
63
64
65run = client.actor("first_watch/csv-data-cleaning-and-normalization").call(run_input=run_input)
66
67
68print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
69for item in client.dataset(run.default_dataset_id).iterate_items():
70 print(item)
71
72