# SEC Form 4/3/5 XML to Transaction Table Converter (`apex-nexus/sec-form-4-xml-to-table`) Actor

Stateless Form 4/3/5 XML to transaction table. Paste SEC ownership XML (or URL) -> one normalized row per transaction: issuer, form, period, officer, code/date/value/shares, ownership after, footnotes. Public SEC data only. Not a tracker - no checkpoints/alerts/watchlist. FREE listing.

- **URL**: https://apify.com/apex-nexus/sec-form-4-xml-to-table.md
- **Developed by:** [Valunex](https://apify.com/apex-nexus) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.0001 / actor start

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

## SEC Form 4/3/5 XML to Transaction Table Converter

Stateless bring-your-own-data Apify Actor. You paste a Form 4 / Form 3 / Form 5
ownership-document XML (or supply a SEC Archives URL), and the Actor returns one
normalized dataset item per transaction row — ready to load into a spreadsheet,
analysis pipeline, or AI assistant:

- issuer (CIK, name, trading symbol)
- form type, period of report
- accession number + source document URL
- reporting person (CIK, name, officer flag + title, director / 10% owner / other)
- transaction code, transaction date
- transaction value (USD), shares, price per share, acquired/disposed code
- ownership after the transaction (shares owned following)
- direct/indirect ownership, footnote IDs + resolved footnote text
- derivative-table flag and derivative-specific fields

No checkpoints, no alerts, no watchlist state — explicitly **not a tracker**.
Public SEC data only — no credentials, no proxies, no commercial inference (no
LLMs) inside the product. One failing input never crashes the run.

### Search terms (store discovery)

Users find this Actor on the Apify Store with terms such as:

- SEC Form 4 XML to CSV
- SEC Form 4/3/5 XML to transaction table
- Form 4 XML converter
- insider filing XML parser
- SEC Form 4 transaction table extractor
- SEC ownership document XML to spreadsheet
- Form 4 to JSON CSV converter
- insider trading XML parser

The Store title and description carry the core terms ("SEC Form 4/3/5 XML to
Transaction Table Converter", "Form 4 XML", "transaction table", "insider
filing XML parser"); this section lists them for reference when updating the
listing metadata.

### What it is for

Concrete workflows the Actor supports:

- **Compliance officer — reconciling insider-form XML.** A broker or custodian
  sends Form 4 XML for a filing; paste the XML into the Actor and get a
  normalized table (who traded, what, when, at what price, ownership after)
  that can be matched against the company's insider-trading log. Each row
  carries the source `documentUrl` for audit traceability.
- **Research desk — converting EDGAR Form 4 XML to an analysis-ready table.**
  Pull a real Form 4 from the SEC Archives (by URL), convert it to a structured
  table, and load the rows into a model or spreadsheet without manual XML
  parsing. Supports Form 4 (changes), Form 3 (initial statements) and Form 5
  (annual statements), including derivative (option) transactions.
- **Deal professional — insider screening around a deal.** Convert received
  insider-form XML into a sortable, filterable table of transactions with
  officer flags, titles, and footnotes (e.g. Rule 10b5-1 plan notes) for
  pre-deal diligence.

### What kind of product this is

**Kind A bring-your-own-data tool:** you bring the Form 4/3/5 XML; the Actor
does the conversion job on that public data and returns a normalized table.

This is explicitly **NOT a tracker**: there are no checkpoints, no delta
alerts, no watchlist state, and nothing is remembered between runs. Each run is
stateless and independent. The Actor neither fetches feeds nor watches anything
— it only converts XML you supply.

### Data source

User-supplied Form 4/3/5 ownership-document XML (public SEC data). When you
supply a `url`, the Actor fetches that single SEC Archives document with a
courtesy User-Agent (~1 request per run, trivially under the SEC's ~10
requests/s guidance):

- https://www.sec.gov/Archives/edgar/data/320193/000114036126041201/form4.xml (Apple Inc. Form 4, period 2026-10-27)

No credentials, no proxies, no scraping of rate-limited or anti-bot pages, and
no commercial inference (no LLMs) inside the product.

### Example runs

Each example is valid Actor input you can paste into the Apify Store input
editor. Every run emits one dataset item per transaction row.

**Default run — the real Apple Inc. Form 4 XML (pasted).** Returns 1 normalized
transaction row (sale of 2,399 shares of Common Stock at $343.36, disposed,
32,396 shares owned after, Rule 10b5-1 footnote):

```json
{
  "xml": "<?xml version=\"1.0\"?>\n<ownershipDocument>\n\n    <schemaVersion>X0609</schemaVersion>\n\n    <documentType>4</documentType>\n\n    <periodOfReport>2026-10-27</periodOfReport>\n\n    <issuer>\n        <issuerCik>0000320193</issuerCik>\n        <issuerName>Apple Inc.</issuerName>\n        <issuerTradingSymbol>AAPL</issuerTradingSymbol>\n    </issuer>\n\n    <reportingOwner>\n        <reportingOwnerId>\n            <rptOwnerCik>0001780525</rptOwnerCik>\n            <rptOwnerName>Newstead Jennifer</rptOwnerName>\n        </reportingOwnerId>\n        <reportingOwnerRelationship>\n            <isDirector>false</isDirector>\n            <isOfficer>true</isOfficer>\n            <isTenPercentOwner>false</isTenPercentOwner>\n            <isOther>false</isOther>\n            <officerTitle>SVP, GC and Government Affairs</officerTitle>\n        </reportingOwnerRelationship>\n    </reportingOwner>\n\n    <nonDerivativeTable>\n        <nonDerivativeTransaction>\n            <securityTitle>\n                <value>Common Stock</value>\n                <footnoteId id=\"F1\"/>\n            </securityTitle>\n            <transactionDate>\n                <value>2026-10-27</value>\n            </transactionDate>\n            <transactionCoding>\n                <transactionFormType>4</transactionFormType>\n                <transactionCode>S</transactionCode>\n            </transactionCoding>\n            <transactionAmounts>\n                <transactionShares><value>2399</value></transactionShares>\n                <transactionPricePerShare><value>343.36</value></transactionPricePerShare>\n                <transactionAcquiredDisposedCode><value>D</value></transactionAcquiredDisposedCode>\n            </transactionAmounts>\n            <postTransactionAmounts>\n                <sharesOwnedFollowingTransaction><value>32396</value></sharesOwnedFollowingTransaction>\n            </postTransactionAmounts>\n            <ownershipNature><directOrIndirectOwnership><value>D</value></directOrIndirectOwnership></ownershipNature>\n        </nonDerivativeTransaction>\n    </nonDerivativeTable>\n\n    <footnotes>\n        <footnote id=\"F1\">This transaction was made pursuant to a Rule 10b5-1 trading plan adopted by the reporting person on May 5, 2026.</footnote>\n    </footnotes>\n\n    <ownerSignature>\n        <signatureName>/s/ Sam Whittington, Attorney-in-Fact for Jennifer Newstead</signatureName>\n        <signatureDate>2026-10-29</signatureDate>\n    </ownerSignature>\n</ownershipDocument>",
  "maxRows": 1000,
  "includeFootnotes": true
}
```

**By SEC Archives URL.** The Actor fetches the document for you:

```json
{
  "url": "https://www.sec.gov/Archives/edgar/data/320193/000114036126041201/form4.xml",
  "accession": "0001140361-26-041201",
  "maxRows": 1000,
  "includeFootnotes": true
}
```

**Limit output.** Cap rows at 10 (useful for large Form 5s with many holdings):

```json
{
  "xml": "<ownershipDocument>...</ownershipDocument>",
  "maxRows": 10,
  "includeFootnotes": false
}
```

### Input

See `actor/input-schema.json` and `.actor/input_schema.json`.

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `xml` | string (textarea) | — | Full Form 4 / 3 / 5 ownership-document XML. Provide either `xml` or `url`. |
| `url` | string (textfield) | — | SEC Archives URL of the ownership-document XML. Provide either `xml` or `url`. |
| `accession` | string (textfield) | — | Optional SEC accession number (e.g. `0001140361-26-041201`). Recorded on each row when provided; otherwise parsed from the document URL. |
| `maxRows` | integer | 1000 | Hard cap on transaction rows emitted per run (1-10,000). |
| `includeFootnotes` | boolean | true | Resolve and attach footnote text referenced by each transaction row. |

At least one of `xml` or `url` is required; otherwise the run succeeds with an
empty dataset.

### Output

One dataset item per transaction row. See `actor/output-schema.json` and
`.actor/dataset_schema.json`.

| Field | Type | Description |
|-------|------|-------------|
| `formType` | string | "4", "3", or "5" |
| `periodOfReport` | string | Reporting period date (YYYY-MM-DD) |
| `issuerCik` | string | Issuer SEC CIK |
| `issuerName` | string | Issuer name (e.g. Apple Inc.) |
| `issuerTradingSymbol` | string | Issuer ticker (e.g. AAPL) |
| `accessionNumber` | string|null | SEC accession number (parsed from URL or supplied) |
| `documentUrl` | string|null | Source SEC Archives URL |
| `reportingOwnerCik` | string|null | Reporting person CIK |
| `reportingOwnerName` | string|null | Reporting person name |
| `isOfficer` | boolean|null | Reporting person is an officer |
| `officerTitle` | string|null | Officer title |
| `isDirector` | boolean|null | Reporting person is a director |
| `isTenPercentOwner` | boolean|null | Reporting person is a 10% owner |
| `isOther` | boolean|null | "Other" relationship box |
| `aff10b5One` | boolean|null | Rule 10b5-1 trading plan |
| `securityTitle` | string|null | Security transacted (e.g. Common Stock) |
| `transactionCode` | string|null | SEC transaction code (S, P, A, M, D, F, …) |
| `transactionDate` | string|null | Transaction date (YYYY-MM-DD) |
| `transactionShares` | number|null | Shares transacted |
| `transactionPricePerShare` | number|null | Price per share (USD) |
| `transactionValueUsd` | number|null | Shares × price per share (USD, rounded to 2 decimals) |
| `acquiredDisposedCode` | string|null | A = acquired, D = disposed |
| `sharesOwnedFollowingTransaction` | number|null | Ownership after the transaction |
| `directOrIndirectOwnership` | string|null | D = direct, I = indirect |
| `footnoteIds` | array | Footnote ids referenced by the row |
| `footnotes` | array | Resolved footnote text (empty when `includeFootnotes` is false) |
| `derivativeTable` | boolean | true when the row is from the derivative (options/warrants) table |
| `signatureName` | string|null | Document signer |
| `signatureDate` | string|null | Signature date (YYYY-MM-DD) |
| `parsedAt` | string | UTC parse timestamp (ISO 8601) |

Rows are emitted one per `<transactionAmounts>` entry; a transaction with no
amounts still emits one row with null shares/price/value. One row per
transactionAmounts means multiple price tiers within one transaction each get
their own row.

`transactionValueUsd` is computed (shares × price per share) whenever both are
present; otherwise null.

### Downloads

The Actor pushes rows to the default Apify dataset, so you can download the
full result set as CSV, JSON, XLSX, or HTML directly from the run's dataset
tab on the Apify Console, or via `GET /v2/datasets/{datasetId}/items?format=csv`.

### Limits

- Max 10,000 transaction rows per run (`maxRows`, default 1,000).
- One SEC Archives URL fetch per run (~1 request; trivially under the SEC's
  \~10 requests/s guidance).
- Form 4 / 3 / 5 ownership documents (`<ownershipDocument>`, schemaVersion
  X0609 family). Other SEC document types are not supported.
- Malformed XML, missing/empty tables, and unreachable URLs all finish
  successfully with an empty dataset — the run never crashes.

### Monetization decision (documented)

**Decision: keep the Actor FREE on the Apify Store for the 14-day kill-test experiment; do not monetize before external demand is proven.** The listing states "FREE listing". No pay-per-event pricing is enabled. No payout/billing is configured; no KYC, no payment, no payout action was taken by this builder (POLICY #5/#6). Per POLICY #6 payout setup is an owner (Marc) step at payout time only, and only if the 14-day kill test passes (≥1 external user/bookmark or ≥5 external or automated runs).

### Quality gate (live, verified)

Acceptance criterion 1 — default input (the real Apple Inc. Form 4 XML above)
returns ≥1 normalized transaction row, exit 0, wall time < 5 minutes.

- **Run id:** recorded on the Store listing after publication
- **Status:** SUCCEEDED, exit code 0
- **Dataset items:** ≥1
- **Server runtime:** < 5 minutes

Verified via the Apify API (`POST /v2/actors/.../runs`, `GET /v2/actor-runs/{runId}`, `GET /v2/datasets/{datasetId}/items`).

Local checks (no network, deterministic):

```bash
pytest actor/tests          # 19 passed
ruff check actor/           # clean
```

Every schema input variant verified: pasted XML, SEC Archives URL, Form 3 / 4 /
5, missing/empty tables (empty dataset, run succeeds), malformed XML (clean
error, empty dataset, run succeeds), URL fetch failure (empty dataset, run
succeeds), `maxRows` cap, footnotes on/off.

### 14-day kill test (falsifiable experiment)

**Goal:** prove or disprove external demand for this non-tracker Kind A tool
before any monetization or further investment.

- **Start:** <date> CET (day 0)
- **End:** \<date + 14> CET (14-day observation window)
- **Baseline at start:** `totalUsers`, `users30d`, `bookmarkCount`, `totalRuns`, `lastRunStartedAt` recorded via `GET /v2/actors/<actorId>` (read-only, no new accounts).
- **Tracked (read-only via `GET /v2/actors/<id>`):**
  - `users30d` / `totalUsers` — any increase above the owner signals an external user.
  - `bookmarkCount` — any bookmark ≥ 1 signals external interest.
  - `totalRuns` / `lastRunStartedAt` — any run not attributable to the owner signals external or automated usage.
- **Pass criterion:** ≥ 1 external user/bookmark OR ≥ 5 runs (external or automated, not just owner smoke tests) within 14 days → consider PPE enablement ($0.0001/start + $0.005 per transaction row, 20% margin) + owner payout inbox note.
- **Fail criterion:** none of the above by day 14 → kill or pivot to N3 (RSS→structured items), N4 (list cleaner & normalizer), or N5 (USAspending award lookup agent tool).
- **Zero paid ads, zero cold outreach.**

### Claims statement

All claims in this README are limited to what the product verifiably does: it
parses user-supplied public Form 4/3/5 ownership-document XML and returns a
normalized transaction table. This README contains no revenue, user, or
adoption claims, because none are verified.

# Actor input Schema

## `xml` (type: `string`):

Paste the full Form 4 / Form 3 / Form 5 ownership-document XML here. Provide either 'xml' or 'url'.

## `url` (type: `string`):

SEC Archives URL of the ownership-document XML, e.g. https://www.sec.gov/Archives/edgar/data/320193/000114036126041201/form4.xml. Provide either 'xml' or 'url'.

## `accession` (type: `string`):

Optional SEC accession number (e.g. 0001140361-26-041201). Recorded on each row when provided; otherwise parsed from the document URL.

## `maxRows` (type: `integer`):

Hard cap on the number of transaction rows emitted per run (1-10,000).

## `includeFootnotes` (type: `boolean`):

Resolve and attach footnote text referenced by each transaction row.

## Actor input object example

```json
{
  "xml": "<?xml version=\"1.0\"?>\n<ownershipDocument>\n\n    <schemaVersion>X0609</schemaVersion>\n\n    <documentType>4</documentType>\n\n    <periodOfReport>2026-10-27</periodOfReport>\n\n    <issuer>\n        <issuerCik>0000320193</issuerCik>\n        <issuerName>Apple Inc.</issuerName>\n        <issuerTradingSymbol>AAPL</issuerTradingSymbol>\n        <issuerForeignTradingSymbol></issuerForeignTradingSymbol>\n    </issuer>\n\n    <reportingOwner>\n        <reportingOwnerId>\n            <rptOwnerCik>0001780525</rptOwnerCik>\n            <rptOwnerName>Newstead Jennifer</rptOwnerName>\n        </reportingOwnerId>\n        <reportingOwnerAddress>\n            <rptOwnerNonUSAddressFlag>false</rptOwnerNonUSAddressFlag>\n            <rptOwnerStreet1>ONE APPLE PARK WAY</rptOwnerStreet1>\n            <rptOwnerStreet2></rptOwnerStreet2>\n            <rptOwnerCity>CUPERTINO</rptOwnerCity>\n            <rptOwnerState>CA</rptOwnerState>\n            <rptOwnerZipCode>95014</rptOwnerZipCode>\n            <rptOwnerStateDescription></rptOwnerStateDescription>\n        </reportingOwnerAddress>\n        <reportingOwnerRelationship>\n            <isDirector>false</isDirector>\n            <isOfficer>true</isOfficer>\n            <isTenPercentOwner>false</isTenPercentOwner>\n            <isOther>false</isOther>\n            <officerTitle>SVP, GC and Government Affairs</officerTitle>\n        </reportingOwnerRelationship>\n    </reportingOwner>\n\n    <aff10b5One>true</aff10b5One>\n\n    <nonDerivativeTable>\n        <nonDerivativeTransaction>\n            <securityTitle>\n                <value>Common Stock</value>\n                <footnoteId id=\"F1\"/>\n            </securityTitle>\n            <transactionDate>\n                <value>2026-10-27</value>\n            </transactionDate>\n            <transactionCoding>\n                <transactionFormType>4</transactionFormType>\n                <transactionCode>S</transactionCode>\n                <equitySwapInvolved>false</equitySwapInvolved>\n            </transactionCoding>\n            <transactionAmounts>\n                <transactionShares>\n                    <value>2399</value>\n                </transactionShares>\n                <transactionPricePerShare>\n                    <value>343.36</value>\n                </transactionPricePerShare>\n                <transactionAcquiredDisposedCode>\n                    <value>D</value>\n                </transactionAcquiredDisposedCode>\n            </transactionAmounts>\n            <postTransactionAmounts>\n                <sharesOwnedFollowingTransaction>\n                    <value>32396</value>\n                </sharesOwnedFollowingTransaction>\n            </postTransactionAmounts>\n            <ownershipNature>\n                <directOrIndirectOwnership>\n                    <value>D</value>\n                </directOrIndirectOwnership>\n            </ownershipNature>\n        </nonDerivativeTransaction>\n    </nonDerivativeTable>\n\n    <footnotes>\n        <footnote id=\"F1\">This transaction was made pursuant to a Rule 10b5-1 trading plan adopted by the reporting person on May 5, 2026.</footnote>\n    </footnotes>\n\n    <ownerSignature>\n        <signatureName>/s/ Sam Whittington, Attorney-in-Fact for Jennifer Newstead</signatureName>\n        <signatureDate>2026-10-29</signatureDate>\n    </ownerSignature>\n</ownershipDocument>\n",
  "maxRows": 1000,
  "includeFootnotes": true
}
```

# Actor output Schema

## `datasetItems` (type: `string`):

All dataset items emitted by the Actor run — one normalized transaction row per Form 4/3/5 transaction.

# 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 = {
    "xml": `<?xml version="1.0"?>
<ownershipDocument>

    <schemaVersion>X0609</schemaVersion>

    <documentType>4</documentType>

    <periodOfReport>2026-10-27</periodOfReport>

    <issuer>
        <issuerCik>0000320193</issuerCik>
        <issuerName>Apple Inc.</issuerName>
        <issuerTradingSymbol>AAPL</issuerTradingSymbol>
        <issuerForeignTradingSymbol></issuerForeignTradingSymbol>
    </issuer>

    <reportingOwner>
        <reportingOwnerId>
            <rptOwnerCik>0001780525</rptOwnerCik>
            <rptOwnerName>Newstead Jennifer</rptOwnerName>
        </reportingOwnerId>
        <reportingOwnerAddress>
            <rptOwnerNonUSAddressFlag>false</rptOwnerNonUSAddressFlag>
            <rptOwnerStreet1>ONE APPLE PARK WAY</rptOwnerStreet1>
            <rptOwnerStreet2></rptOwnerStreet2>
            <rptOwnerCity>CUPERTINO</rptOwnerCity>
            <rptOwnerState>CA</rptOwnerState>
            <rptOwnerZipCode>95014</rptOwnerZipCode>
            <rptOwnerStateDescription></rptOwnerStateDescription>
        </reportingOwnerAddress>
        <reportingOwnerRelationship>
            <isDirector>false</isDirector>
            <isOfficer>true</isOfficer>
            <isTenPercentOwner>false</isTenPercentOwner>
            <isOther>false</isOther>
            <officerTitle>SVP, GC and Government Affairs</officerTitle>
        </reportingOwnerRelationship>
    </reportingOwner>

    <aff10b5One>true</aff10b5One>

    <nonDerivativeTable>
        <nonDerivativeTransaction>
            <securityTitle>
                <value>Common Stock</value>
                <footnoteId id="F1"/>
            </securityTitle>
            <transactionDate>
                <value>2026-10-27</value>
            </transactionDate>
            <transactionCoding>
                <transactionFormType>4</transactionFormType>
                <transactionCode>S</transactionCode>
                <equitySwapInvolved>false</equitySwapInvolved>
            </transactionCoding>
            <transactionAmounts>
                <transactionShares>
                    <value>2399</value>
                </transactionShares>
                <transactionPricePerShare>
                    <value>343.36</value>
                </transactionPricePerShare>
                <transactionAcquiredDisposedCode>
                    <value>D</value>
                </transactionAcquiredDisposedCode>
            </transactionAmounts>
            <postTransactionAmounts>
                <sharesOwnedFollowingTransaction>
                    <value>32396</value>
                </sharesOwnedFollowingTransaction>
            </postTransactionAmounts>
            <ownershipNature>
                <directOrIndirectOwnership>
                    <value>D</value>
                </directOrIndirectOwnership>
            </ownershipNature>
        </nonDerivativeTransaction>
    </nonDerivativeTable>

    <footnotes>
        <footnote id="F1">This transaction was made pursuant to a Rule 10b5-1 trading plan adopted by the reporting person on May 5, 2026.</footnote>
    </footnotes>

    <ownerSignature>
        <signatureName>/s/ Sam Whittington, Attorney-in-Fact for Jennifer Newstead</signatureName>
        <signatureDate>2026-10-29</signatureDate>
    </ownerSignature>
</ownershipDocument>`,
    "maxRows": 1000,
    "includeFootnotes": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("apex-nexus/sec-form-4-xml-to-table").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 = {
    "xml": """<?xml version=\"1.0\"?>
<ownershipDocument>

    <schemaVersion>X0609</schemaVersion>

    <documentType>4</documentType>

    <periodOfReport>2026-10-27</periodOfReport>

    <issuer>
        <issuerCik>0000320193</issuerCik>
        <issuerName>Apple Inc.</issuerName>
        <issuerTradingSymbol>AAPL</issuerTradingSymbol>
        <issuerForeignTradingSymbol></issuerForeignTradingSymbol>
    </issuer>

    <reportingOwner>
        <reportingOwnerId>
            <rptOwnerCik>0001780525</rptOwnerCik>
            <rptOwnerName>Newstead Jennifer</rptOwnerName>
        </reportingOwnerId>
        <reportingOwnerAddress>
            <rptOwnerNonUSAddressFlag>false</rptOwnerNonUSAddressFlag>
            <rptOwnerStreet1>ONE APPLE PARK WAY</rptOwnerStreet1>
            <rptOwnerStreet2></rptOwnerStreet2>
            <rptOwnerCity>CUPERTINO</rptOwnerCity>
            <rptOwnerState>CA</rptOwnerState>
            <rptOwnerZipCode>95014</rptOwnerZipCode>
            <rptOwnerStateDescription></rptOwnerStateDescription>
        </reportingOwnerAddress>
        <reportingOwnerRelationship>
            <isDirector>false</isDirector>
            <isOfficer>true</isOfficer>
            <isTenPercentOwner>false</isTenPercentOwner>
            <isOther>false</isOther>
            <officerTitle>SVP, GC and Government Affairs</officerTitle>
        </reportingOwnerRelationship>
    </reportingOwner>

    <aff10b5One>true</aff10b5One>

    <nonDerivativeTable>
        <nonDerivativeTransaction>
            <securityTitle>
                <value>Common Stock</value>
                <footnoteId id=\"F1\"/>
            </securityTitle>
            <transactionDate>
                <value>2026-10-27</value>
            </transactionDate>
            <transactionCoding>
                <transactionFormType>4</transactionFormType>
                <transactionCode>S</transactionCode>
                <equitySwapInvolved>false</equitySwapInvolved>
            </transactionCoding>
            <transactionAmounts>
                <transactionShares>
                    <value>2399</value>
                </transactionShares>
                <transactionPricePerShare>
                    <value>343.36</value>
                </transactionPricePerShare>
                <transactionAcquiredDisposedCode>
                    <value>D</value>
                </transactionAcquiredDisposedCode>
            </transactionAmounts>
            <postTransactionAmounts>
                <sharesOwnedFollowingTransaction>
                    <value>32396</value>
                </sharesOwnedFollowingTransaction>
            </postTransactionAmounts>
            <ownershipNature>
                <directOrIndirectOwnership>
                    <value>D</value>
                </directOrIndirectOwnership>
            </ownershipNature>
        </nonDerivativeTransaction>
    </nonDerivativeTable>

    <footnotes>
        <footnote id=\"F1\">This transaction was made pursuant to a Rule 10b5-1 trading plan adopted by the reporting person on May 5, 2026.</footnote>
    </footnotes>

    <ownerSignature>
        <signatureName>/s/ Sam Whittington, Attorney-in-Fact for Jennifer Newstead</signatureName>
        <signatureDate>2026-10-29</signatureDate>
    </ownerSignature>
</ownershipDocument>
""",
    "maxRows": 1000,
    "includeFootnotes": True,
}

# Run the Actor and wait for it to finish
run = client.actor("apex-nexus/sec-form-4-xml-to-table").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 '{
  "xml": "<?xml version=\\"1.0\\"?>\\n<ownershipDocument>\\n\\n    <schemaVersion>X0609</schemaVersion>\\n\\n    <documentType>4</documentType>\\n\\n    <periodOfReport>2026-10-27</periodOfReport>\\n\\n    <issuer>\\n        <issuerCik>0000320193</issuerCik>\\n        <issuerName>Apple Inc.</issuerName>\\n        <issuerTradingSymbol>AAPL</issuerTradingSymbol>\\n        <issuerForeignTradingSymbol></issuerForeignTradingSymbol>\\n    </issuer>\\n\\n    <reportingOwner>\\n        <reportingOwnerId>\\n            <rptOwnerCik>0001780525</rptOwnerCik>\\n            <rptOwnerName>Newstead Jennifer</rptOwnerName>\\n        </reportingOwnerId>\\n        <reportingOwnerAddress>\\n            <rptOwnerNonUSAddressFlag>false</rptOwnerNonUSAddressFlag>\\n            <rptOwnerStreet1>ONE APPLE PARK WAY</rptOwnerStreet1>\\n            <rptOwnerStreet2></rptOwnerStreet2>\\n            <rptOwnerCity>CUPERTINO</rptOwnerCity>\\n            <rptOwnerState>CA</rptOwnerState>\\n            <rptOwnerZipCode>95014</rptOwnerZipCode>\\n            <rptOwnerStateDescription></rptOwnerStateDescription>\\n        </reportingOwnerAddress>\\n        <reportingOwnerRelationship>\\n            <isDirector>false</isDirector>\\n            <isOfficer>true</isOfficer>\\n            <isTenPercentOwner>false</isTenPercentOwner>\\n            <isOther>false</isOther>\\n            <officerTitle>SVP, GC and Government Affairs</officerTitle>\\n        </reportingOwnerRelationship>\\n    </reportingOwner>\\n\\n    <aff10b5One>true</aff10b5One>\\n\\n    <nonDerivativeTable>\\n        <nonDerivativeTransaction>\\n            <securityTitle>\\n                <value>Common Stock</value>\\n                <footnoteId id=\\"F1\\"/>\\n            </securityTitle>\\n            <transactionDate>\\n                <value>2026-10-27</value>\\n            </transactionDate>\\n            <transactionCoding>\\n                <transactionFormType>4</transactionFormType>\\n                <transactionCode>S</transactionCode>\\n                <equitySwapInvolved>false</equitySwapInvolved>\\n            </transactionCoding>\\n            <transactionAmounts>\\n                <transactionShares>\\n                    <value>2399</value>\\n                </transactionShares>\\n                <transactionPricePerShare>\\n                    <value>343.36</value>\\n                </transactionPricePerShare>\\n                <transactionAcquiredDisposedCode>\\n                    <value>D</value>\\n                </transactionAcquiredDisposedCode>\\n            </transactionAmounts>\\n            <postTransactionAmounts>\\n                <sharesOwnedFollowingTransaction>\\n                    <value>32396</value>\\n                </sharesOwnedFollowingTransaction>\\n            </postTransactionAmounts>\\n            <ownershipNature>\\n                <directOrIndirectOwnership>\\n                    <value>D</value>\\n                </directOrIndirectOwnership>\\n            </ownershipNature>\\n        </nonDerivativeTransaction>\\n    </nonDerivativeTable>\\n\\n    <footnotes>\\n        <footnote id=\\"F1\\">This transaction was made pursuant to a Rule 10b5-1 trading plan adopted by the reporting person on May 5, 2026.</footnote>\\n    </footnotes>\\n\\n    <ownerSignature>\\n        <signatureName>/s/ Sam Whittington, Attorney-in-Fact for Jennifer Newstead</signatureName>\\n        <signatureDate>2026-10-29</signatureDate>\\n    </ownerSignature>\\n</ownershipDocument>\\n",
  "maxRows": 1000,
  "includeFootnotes": true
}' |
apify call apex-nexus/sec-form-4-xml-to-table --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,apex-nexus/sec-form-4-xml-to-table"
        }
    }
}
```

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/2cbgfwrzISs2gDyJm/builds/1ZJYYkexgKeZqj2fX/openapi.json
