Skip to content

Commit 890d837

Browse files
docs: Add more info about free users (#2150)
1 parent 4c74933 commit 890d837

2 files changed

Lines changed: 35 additions & 15 deletions

File tree

sources/platform/actors/development/programming_interface/status_messages.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import TabItem from '@theme/TabItem';
1515
Each Actor run has a status, represented by the `status` field. The following table describes the possible values:
1616

1717
|Status|Type|Description|
18-
|--- |--- |--- |
18+
|---|---|---|
1919
|`READY`|initial|Started but not allocated to any worker yet|
2020
|`RUNNING`|transitional|Executing on a worker|
2121
|`SUCCEEDED`|terminal|Finished successfully|
@@ -76,3 +76,15 @@ async def main():
7676

7777
</TabItem>
7878
</Tabs>
79+
80+
## Communicate limitations
81+
82+
If your Actor has specific limitations for users on the Apify free plan (e.g., restricted features, limited results), communicate these clearly to avoid confusion.
83+
84+
- Status messages: Use `Actor.setStatusMessage` or `Actor.exit` message to explain why a run finished early or failed (e.g., "This Actor has a special daily limit for free plan users. This was set by the Actor developer, not Apify. Upgrade to continue.").
85+
- Provide clear error messages: Don't return generic system errors or fail the run in a way that looks like a platform issue. This frustrates users and makes troubleshooting difficult.
86+
- Wrong: API usage is limited to 10 results
87+
- Right: This Actor only allows up to 10 results for free users. Upgrade to a paid plan to receive unlimited results.
88+
- Documentation: Clearly state any limitations in your Actor's `README` and input schema descriptions so users know what to expect before running the Actor.
89+
- General restrictions (like limiting the number of results) must be explained in the top-level input schema description that renders above the input editor UI.
90+
- Feature-specific limitations must be included in the title of an input field. The title must include explanation in parenthesis such as `(paying users only)` or `(limited for free users)`. E.g. `Max comments (paying users only)`.

sources/platform/actors/publishing/monetize/index.mdx

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,18 @@ For a detailed comparison of pricing models from the perspective of your users,
2929

3030
The following table compares the two main pricing models available for monetizing your Actors:
3131

32-
| Feature/Category | Rental | Pay-per-result (PPR) | Pay-per-event (PPE) |
33-
|-------------------------|-------------------------------|-------------------------------|-------------------------------|
34-
| Revenue scalability | Capped at monthly fee | Unlimited, scales with usage | Unlimited, scales with usage |
35-
| AI/MCP compatibility | ❌ Not compatible | ✅ Fully compatible | ✅ Fully compatible |
36-
| User cost predictability| Unpredictable (rental + usage) | Predictable | Predictable |
37-
| Store discounts | ❌ Single price only | ✅ Store discounts available | ✅ Store discounts available |
38-
| Marketing boost | Standard visibility | Standard visibility | Priority store placement |
39-
| Commission opportunities| Standard 20% | Standard 20% | Standard 20% |
40-
| Custom event billing | Not available | Not available | ✅ Charge for any event |
41-
| Per-result billing | Not available | ✅ Charge per dataset item | Optional (via event; automatic via `apify-default-dataset-item`) |
42-
43-
## Setting up monetization
32+
| Feature/Category | Rental | Pay-per-result (PPR) | Pay-per-event (PPE) |
33+
|--------------------------|--------------------------------|-------------------------------|------------------------------------------------------------------|
34+
| Revenue scalability | Capped at monthly fee | Unlimited, scales with usage | Unlimited, scales with usage |
35+
| AI/MCP compatibility | ❌ Not compatible | ✅ Fully compatible | ✅ Fully compatible |
36+
| User cost predictability | Unpredictable (rental + usage) | Predictable | Predictable |
37+
| Store discounts | ❌ Single price only | ✅ Store discounts available | ✅ Store discounts available |
38+
| Marketing boost | Standard visibility | Standard visibility | Priority store placement |
39+
| Commission opportunities | Standard 20% | Standard 20% | Standard 20% |
40+
| Custom event billing | Not available | Not available | ✅ Charge for any event |
41+
| Per-result billing | Not available | ✅ Charge per dataset item | Optional (via event; automatic via `apify-default-dataset-item`) |
42+
43+
## Set up monetization
4444

4545
Navigate to your [Actor page](https://console.apify.com/actors?tab=my) in Apify Console, choose the Actor that you want to monetize, and select the Publication tab.
4646
![Monetization section](../images/monetization-section.png)
@@ -61,7 +61,7 @@ Follow the monetization wizard to configure your pricing model.
6161
</TabItem>
6262
</Tabs>
6363

64-
### Changing monetization
64+
### Change monetization
6565

6666
You can change the monetization setting of your Actor by using the same wizard as for the setup in the **Monetization** section of your Actor's **Publication** tab.
6767

@@ -100,6 +100,14 @@ If no action is taken, the payout will be automatically approved on the 14th, wi
100100

101101
If the monthly profit does not meet these thresholds, as per our [Terms & Conditions](https://apify.com/store-terms-and-conditions), the funds will roll over to the next month until the threshold is reached.
102102

103+
## Handle free users
104+
105+
When monetizing your Actor, you might want to limit features or usage for users on the Apify free plan. If you choose to do this, you _must_ handle it transparently:
106+
107+
- Communicate upfront: Clearly state any limitations in your Actor's `README` and input schema. Users should know about restrictions _before_ they run the Actor.
108+
- Graceful exits: If a free user hits a limit, don't crash the Actor or return a system error. Instead, exit gracefully with a clear [status message](/platform/actors/development/programming-interface/status-messages#communicating-limitations) explaining the limit (e.g., "Free tier limit reached").
109+
- Avoid confusion: Never make a policy restriction look like a bug or platform error.
110+
103111
## Actor analytics
104112

105113
Monitor your Actors' performance through the [Actor Analytics](https://console.apify.com/actors/insights/analytics) dashboard under **Development > Insights > Analytics**.
@@ -115,7 +123,7 @@ The analytics dashboard allows you to select specific Actors and view key metric
115123

116124
All metrics can be exported as JSON for custom analysis and reporting.
117125

118-
## Promoting your Actor
126+
## Promote your Actor
119127

120128
Create search-engine-optimized descriptions and README files to improve search engine visibility. Share your Actor on multiple channels:
121129

0 commit comments

Comments
 (0)