Dhrumil
Dhrumil4d ago

Rightmove Scraper · Apify

With all due respect to industry standards but in pay per event model, we are charging per event. My event itself says that I will bill 2 USD per 1K records. While setting cost in Apify, I mentioned 2 USD only for thet event! How come Apify displaying this as 2000 USD per 1K records! This is freaking out customers! I have raised concern in Apify support since more than a week. I started saying to contact Apify support now to end customers as there is clearing nothing I can do about it as developer. This pricing is wrongly displayed on public pages and inside Apify dashboard top bar Please check : https://apify.com/dhrumil/rightmove-scraper
Apify
Rightmove Scraper · Apify
Scrape rightmove.co.uk to crawl millions of sale/rent real estate properties from United Kingdom. Our real estate scraper also lets you monitor specific...
29 Replies
Dhrumil
DhrumilOP4d ago
@ellativity Nice to meet you! Please take a look at pricing set in back-end. It's correct and existing customers are charged correctly
ellativity
ellativity4d ago
Hi, moving this conversation into a thread so we can track it
Dhrumil
DhrumilOP4d ago
It's just Apify is displaying this price wrongly to customers
ellativity
ellativity4d ago
I see you have per-event pricing set up. Can you share the part of your code with me where you define the events?
Dhrumil
DhrumilOP4d ago
I am not asking to change pricing. I am reporting potention display bug in platform.
Saurav Jain
Saurav Jain4d ago
the price you set in console is per event not per thousand.
ellativity
ellativity4d ago
I am looking at your pricing and I can see that the way it's set up inside your Console is causing the pricing to be displayed the way it is
Dhrumil
DhrumilOP4d ago
Correct. It's per event
ellativity
ellativity4d ago
Apify asks you to set up a cost per event, so we then multiply that cost by 1000 to provide your customers with a price per 1000 events. This is industry standard. You don't need to multiply by 1000 yourself as we automate that
Dhrumil
DhrumilOP4d ago
In simple terms, If I say x event will cost you 2 USD, why x event is displayed as 2000 USD as price to customer
ellativity
ellativity4d ago
You should have your events as individual events in your code, you don't need to package 1000 results into an event as we will calculate the number of results that are produced by a run and then bill your customer according to the number of results and the per-1000 price you've set
Dhrumil
DhrumilOP4d ago
Ok. Trying to understand your point
ellativity
ellativity4d ago
I think it's complicated because you're trying to create tiered pricing yourself. Apify already has a way to set up tiered pricing that reflects the Apify plan a customer has subscribed to (see: https://docs.apify.com/platform/actors/publishing/monetize#how-to-attract-larger-customers-of-ppe-and-ppr-actors)
Monetize your Actor | Platform | Apify Documentation
Learn how you can monetize your web scraping and automation projects by publishing Actors to users in Apify Store.
Dhrumil
DhrumilOP4d ago
Yes, I have created my own tiers It's more appealing to customers + can be adjusted based on specific actor
ellativity
ellativity4d ago
We have simplified it as much as possible for both developers and customers, so you have a per-event charge. You can decide whether it's for all users or whether you want to introduce discounts for higher volume customers. Either way, you just give Apify the per-event price and when the Actor is run, we will bill your customer for the results they have received according to the price you've set and the tiers you have set We have found that what is more appealing to customers is having a standardized pricing model that they can understand once and then apply to different Actors Most customers don't want to have to understand multiple pricing models to use multiple Actors or to compare the prices of two or more Actors offering the same service
Dhrumil
DhrumilOP4d ago
In that case, I have to change the code to raise the event for every dataset push rather than every 1K
ellativity
ellativity4d ago
Yes you need to have every billable result set as an event.
Dhrumil
DhrumilOP4d ago
I will do it. Just a thought Is this really thoughtful decision ? I mean imagine I am billing 0.0006 USD per event which covers dataset charge for sure + ralative compute as well. For raising charge event for 0.0006 USD in Apify, Are we doing enough math around it that cost of billing that amount doesn't exceeds the amount itself! 😅
ellativity
ellativity4d ago
That's a good question! I haven't done the math myself, but hopefully the people who have done it know what they're doing!
Dhrumil
DhrumilOP4d ago
Anyways, thanks for expalining this I have to change many of my actors for this
ellativity
ellativity4d ago
I mean, hopefully this makes it easier for customers to run your Actor too, as they have a clear picture of the pricing. Please let me know if you get any customer feedback/reviews. I'd love to hear how it goes for you.
Dhrumil
DhrumilOP4d ago
Would it be possible to change the pricing immediately for these cases via support ? Apparently I am not changing what get billed to customer. I am just changing code and want to set event pricing 1000x lower of what they are right now.
MEE6
MEE64d ago
@Dhrumil just advanced to level 3! Thanks for your contributions! 🎉
ellativity
ellativity4d ago
Yep, I will be happy to make those changes for you once you know what the event names are and how much you want to charge for them. You can share them in DM if you want to as well.
Dhrumil
DhrumilOP4d ago
I have been discussingthis with @Lukas Krivka on another thread as well. But just so that you know as feedback. Currently syncing code with publishing date of pricing is very difficult part. Specifically while you have so many actors to maintain. It's like you have to catch the train in exact that moment. I would appriciate if Apify team can think of some more streamlined way of doing this for PPE actors. I am convinced that PPE is the future. Just want to make sure future is easy to deal with 😀
ellativity
ellativity4d ago
I believe there are some updates to come for the pricing change issue, but all this feedback is super valuable to us so thank you for sharing with Lukaš and now with me. We need to hear from devs with a lot of Actors, because you're dealing with our UI at scale so any friction gets multipled. Thanks for taking the time to let us know what you're dealing with!
Lukas Krivka
Lukas Krivka4d ago
@Dhrumil Well, we had a discussion that there could be a feature for an automatic build switch when pricing changes. But I was opposed to that, I think it is generally better if you make the Actor work in both old and new pricing systems and eventually you remove the old code. This way you can prepare the new code upfront and merge it to latest build and keep testing both modes.
Dhrumil
DhrumilOP3d ago
@Lukas Krivka Actually your point also makes sense. We can't pin point the build even. Let's say if I am changing code and setting up some build number to go live with new events, there are still 14 days to go. In 14 days, world can change a lot. There can be many updates to scraper itself in 14 days which we have to do sync with 2 parallel versions. Certainly not a good idea. In such situation, I would tend to agree with you that we can have two set of events deployed and eventually remove one set of events. That's the best option I can also think of at the moment. However, I have one question, what will be the chargeResult in case of raising event which is not registered with Apify ? I am asking this because right now I have coded actors to stop immediately when chargeResult says charge failed. Is there any indicator/documentation which explains how to identify failed charge vs ignored charge ? This helps to identify that charge was ignored and I don't need to exit the actor when two set of events are there in code for those 14 days of period.
Lukas Krivka
Lukas Krivka2d ago
You can check with Actor.getChargingManager().getPricingInfo().perEventPrices['my-event'] before calling charge Also I think if the event doesn't exist, it will not return eventChargeLimitReached but I'm not 100% sure, you can check the source code https://github.com/apify/apify-sdk-js/blob/315d2eb1e575120a28f6384a19f580ee91d5d29f/packages/apify/src/charging.ts#L237
GitHub
apify-sdk-js/packages/apify/src/charging.ts at 315d2eb1e575120a28f6...
Apify SDK monorepo. Contribute to apify/apify-sdk-js development by creating an account on GitHub.

Did you find this page helpful?