Skip to content

Conversation

@VojtaKai
Copy link
Contributor

@VojtaKai VojtaKai commented Dec 12, 2025

Documentation explaining to users that PPR pricing model is now a legacy pricing model. There is an option to migrate to PPE using a migration button.

Other minor fixes.


Note

Marks PPR as a legacy model with a one-click migration to PPE; clarifies PPE spending-limit behavior and updates quality score categories.

  • Monetization
    • sources/platform/actors/publishing/monetize/pay_per_result.mdx:
      • Add warning that PPR is deprecated and will be replaced by PPE by Jan 2026.
      • Add “One click migration to PPE” section with instructions and migration button screenshot.
    • sources/platform/actors/publishing/monetize/pay_per_event.mdx:
      • Clarify eventChargeLimitReached description to reflect user-set limit behavior.
      • Note that the SDK ChargeResult already respects ACTOR_MAX_TOTAL_CHARGE_USD.
  • Quality score
    • sources/platform/actors/publishing/quality_score.mdx:
      • Minor copy tweak for category intro; add “Trustworthiness” to the category list.

Written by Cursor Bugbot for commit e396273. Configure here.

@VojtaKai VojtaKai self-assigned this Dec 12, 2025
@VojtaKai VojtaKai requested a review from TC-MO as a code owner December 12, 2025 10:23
@github-actions github-actions bot added the t-c&c Team covering store and finance matters. label Dec 12, 2025
@apify-service-account
Copy link

Preview for this PR was built for commit e396273 and is ready at https://pr-2144.preview.docs.apify.com!

Copy link
Member

@metalwarrior665 metalwarrior665 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm but wait for other reviews pls

@apify-service-account
Copy link

Preview for this PR was built for commit ea15b67f and is ready at https://pr-2144.preview.docs.apify.com!

@VojtaKai VojtaKai requested a review from mhamas December 12, 2025 14:57
@apify-service-account
Copy link

Preview for this PR was built for commit 6facd194 and is ready at https://pr-2144.preview.docs.apify.com!

@TC-MO TC-MO requested a review from marcel-rbro December 15, 2025 13:29
@apify-service-account
Copy link

Preview for this PR was built for commit 499d4e80 and is ready at https://pr-2144.preview.docs.apify.com!

@apify-service-account
Copy link

Preview for this PR was built for commit 12d9de3a and is ready at https://pr-2144.preview.docs.apify.com!

Copy link
Contributor

@mhamas mhamas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In general, it looks good to me, pre-approving. Please, consider the comments and have the docs team do the final pass of the text.


:::warning Legacy pricing model

Pay per result is a deprecated and will be replaced by Pay per event by the end of January 2026. [Migrate to PPE in one click](#one-click-migration-to-ppe)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Pay per result is a deprecated and will be replaced by Pay per event by the end of January 2026. [Migrate to PPE in one click](#one-click-migration-to-ppe)
Pay per result is deprecated and will be superseded by Pay per event early in 2026. [Migrate to PPE in one click - fully backward compatible](#one-click-migration-to-ppe)

Select your PPR Actor, go to the Publication tab, open the Monetization section, and click the `Migrate to Pay per event` button.

![Migration button](../images/ppr-to-ppe-migration-button.png)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### Why should I migrate?
The pay-per-event pricing model offers superior flexibility in charging not only for the results but also for any event. This helps you to pass on the costs of external APIs or additional processing directly to your users, price different functionalities of your Actor differently, avoid revenue loss from small but usage-heavy runs, and more.
Given that the Pay per event model is fully compatible with Pay per result, and to bring more simplicity to users of your Actors, we are fully deprecating PPR in favour of PPE. But no worries, the migration is completely automatic and fully backward compatible.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🙌


### What happens during migration

The migration switches your pricing model from Pay per result to Pay per event. Your price per 1,000 results is automatically converted to an equivalent `apify-default-dataset-item` [event](./pay-per-event#use-synthetic-default-dataset-item-event-apify-default-dataset-item) price.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The migration switches your pricing model from Pay per result to Pay per event. Your price per 1,000 results is automatically converted to an equivalent `apify-default-dataset-item` [event](./pay-per-event#use-synthetic-default-dataset-item-event-apify-default-dataset-item) price.
The migration switches your pricing model from Pay per result to Pay per event. Your price per 1,000 results is automatically converted to an equivalent `apify-default-dataset-item` [event](./pay-per-event#use-synthetic-default-dataset-item-event-apify-default-dataset-item) price. This change does not count towards the pricing change limits that you are allowed to do once every 30 days.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was thinking of adding this exact line but then I removed it.
It's back in now :]


**After migration:** With Pay per event, you can define additional custom events beyond dataset items. See [PPE best practices](./pay-per-event#best-practices-for-ppe-actors) for guidance.

**Respecting user spending limits:** You can continue using the `ACTOR_MAX_PAID_DATASET_ITEMS` environment variable to respect user-specified price limits. However, we recommend using the Apify SDK's built-in methods, which automatically handle spending limits for you. [Learn more](./pay-per-event#respect-user-spending-limits)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: Please, do not add the part about using Apify SDK's built-in methods, because it's currently broken for synthetic events: apify/apify-sdk-js#528

I'd just add that if they decide to add any more events in the future, they should read all pay-per-event docs.

Suggested change
**Respecting user spending limits:** You can continue using the `ACTOR_MAX_PAID_DATASET_ITEMS` environment variable to respect user-specified price limits. However, we recommend using the Apify SDK's built-in methods, which automatically handle spending limits for you. [Learn more](./pay-per-event#respect-user-spending-limits)
**Respecting user spending limits:** You can continue using the `ACTOR_MAX_PAID_DATASET_ITEMS` environment variable to respect user-specified price limits. If you decide to add more events in the future, please read our Pay per event documentation [link].

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I actually removed this all together because two lines above I talk about additional events so I just referenced the PPE documentation there.

@apify-service-account
Copy link

Preview for this PR was built for commit d2add141 and is ready at https://pr-2144.preview.docs.apify.com!

@apify-service-account
Copy link

Preview for this PR was built for commit d4ef2ef9 and is ready at https://pr-2144.preview.docs.apify.com!


**Respecting user spending limits:** You can continue using the `ACTOR_MAX_PAID_DATASET_ITEMS` environment variable to respect user-specified price limits.

Bleu sky and flying high free as a bird
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this? Is this some sort of Lorem Ipsum?


## One click migration to PPE

Select your PPR Actor, go to the Publication tab, open the Monetization section, and click the `Migrate to Pay per event` button.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Select your PPR Actor, go to the Publication tab, open the Monetization section, and click the `Migrate to Pay per event` button.
Select your PPR Actor, go to the **Publication** tab, open the **Monetization** section, and click the **Migrate to Pay per event** button.


### Why should I migrate?

The Pay per event pricing model offers superior flexibility in charging not only for the results but also for any event.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The Pay per event pricing model offers superior flexibility in charging not only for the results but also for any event.
The pay per event pricing model offers superior flexibility in charging not only for the results but also for any event.

You can also use italics to highlight: price per event model offers...

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is valid for the entire PR, there's several locations where capital P is used unnecessarily


![Migration button](../images/ppr-to-ppe-migration-button.png)

### Why should I migrate?
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### Why should I migrate?
### Why should I migrate


**Code changes:** No changes to your Actor code are required if it already respects the `ACTOR_MAX_PAID_DATASET_ITEMS` environment variable (the price limit set by users).

**After migration:** With Pay per event, you can define additional custom events beyond dataset items. [Learn more](./pay-per-event)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
**After migration:** With Pay per event, you can define additional custom events beyond dataset items. [Learn more](./pay-per-event)
**After migration:** With [pay per event](./pay-per-event), you can define additional custom events beyond dataset items.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

t-c&c Team covering store and finance matters.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants