I was reading through the API and I clicked on Business API and found reviews as a possible response. The description reads,
List of up to 1 review snippet for the business
Does this mean I cannot pull all my reviews for my business onto my website? I could only show 1 snippet?
This is correct, there is no way to get more reviews from the Yelp API.
You would have to write a web scraper. http://www.jacobward.co.uk/web-scraping-with-php-curl-part-1/
YELPs EULA forbids web scraping.
Under the Restricts section, subsection 2, item 3, "Use any robot, spider, site search/retrieval application, or other automated device, process or means to access, retrieve, scrape, or index any portion of the Site or any Site Content;"
If you do it be careful. These websites have gone after folks hard in the past...
EDIT: by do it I am referring to the webscraping that was suggested.
Yelp will ban your IP if you run your web scraper too often
Related
I am building a Web application, and Web API. The Web application will do ajax call to the server and receive JSON results. The same will happen to the Web API.
I am planing to ask developers to use keys to access the Web API so that I can charge for their uses of it.
The problem is the Web API will be use by the Web application to get the content for the web pages. Is there a way to know if it is my Web application using the Web API or someone trying to highjack the API so that they don't have to pay for it?
I am using PHP on my server.
It's difficult to protect completely but there are techniques that help. ApiAxle (disclaimer: my company) gives you the option of using short lived keys. These will be impossible for a leecher to generate without knowing your secret key. Paired with rate limiting you're getting somewhat closer to where you want to be.
Not foolproof but a start.
When trying to secure something on the web, it might be useful to think about how you want to protect the information that you provide by the api before you try to find a technique for protecting the api.
An example:
Say that your api provides the current weather in London and your web application is an open web page that provides this information while also showing some web ads. You don't want someone else to use the api and show the Lonodn weather somewhere else without showing the web ad because that would ruin your sole income from this service.
You could limit access to the api by providing i.e. short time keys or another complicated protocol, but the problem here is that the information you provides, the London weather, is available to anyone on the web page anyway. If someone wants to "steal" your information and provide the London weather on a different web site they can just write a script that loads your web application, reads the information from the web page and display this in their own web application.
If a person is able to access the information, then he can also write a script that reads this information and display the information somewhere else.
Securing information is actually more about limiting who you want to give access and not so much about how they should get access. If you or your clients makes this information freely available on the net in one form or another, then you cannot (technically) prevent someone else from picking it up and redistribute it.
IS there any way I could retrieve all the reviews of a business Using the API ?
The sample response here just shows 3
http://www.yelp.com/developers/documentation/v2/business
In v3 yelp has a reviews API and it returns only three reviews per business.
Yelp Business Reviews v3
Unfortunately, yelp restricts reviews access via APIs. With the V2.0, it is restricted to just one review snippet, which is also truncated after 40 chars.
An alternate that you could try is to use web scraping platforms such as scrapy. Again, the challenge here is that, yelp changes its layout pretty often just to make sure you don't scrape out their data and hence, your scripts will likely fail after sometime.
I have been using the Google Websearch API for over 1 year now. The service was deprecated in Nov 2010 but continues to provide results to date. More recently, google has started to enforce the 1,000 queries (?) per day limit on this deprecated service. I swear, last month I made over 10,000 API calls in one day without any errors from the service (same IP, same API key).
So I guess my question is has anyone found an alternative yet? I know yahoo boss is pretty good but I am working exclusively on Google for my projects. I do not mind spending money for for this service either as long as i can get 64 results from Google.
On that thought, how are services like Zoomrank able to bypass all Google limits? I have a subscription with Zoomrank and I can get daily rankings for all my keywords. Do they have a tie-up with Google or are they just accessing some secret service I don't know about.
Some people have suggested the new Google custom search, but i dont know how does that help me search the web? Google CS is limited to the CSE you create and searches within those engines. If I am looking for web results for Pizza, Google CS doesnt help me.
Thanks for your input. Much appreciated
UPDATE: #ggez44 points to some official Google documentation of the solution described below here: http://support.google.com/customsearch/bin/answer.py?hl=en&answer=1210656
You can use the Google Custom Search Engine to search the entire web.
In brief:
Create a CSE that searches a single site (e.g. google.com)
In the CSE control panel's Basics section, set to "Search the entire web but emphasize certain sites"
In the Sites section, delete the single site that you added when you created the CSE
Full details here:
http://www.google.com/support/forum/p/customsearch/thread?tid=56c0bd92dda351b7&hl=en&fid=56c0bd92dda351b7000495e3f500d83f
Once that's implemented, you can enable billing in the Google API Console at a CPM of $5, to a total of 10,000 queries.
Google API Console: https://code.google.com/apis/console/
Pricing: https://code.google.com/apis/customsearch/v1/overview.html#Pricing
What URL can I visit to get myself a Google API Account? While sites point to http://www.google.com/apis and talk of "easy steps", I just can't figure it out.
Background:
There are places on the web that offer google services if you give them your Google API account key (in my case http://www.freesitemapgenerator.com and index retrieval).
They say to go to http://www.google.com/apis, but that just redirects me to http://code.google.com. There are no "easy instructions" for me to follow to get an account.
Am I going crazy here? (I have analytics and webmaster tools etc activated, so I somewhat know what I'm doing).
Since December 2006, Google is no longer issuing these API keys
As far as I understand, you apply for an API key, and you can do that with any Google account. The various API's appear to require different keys. To get a key for the Maps API, visit:
http://code.google.com/apis/maps/signup.html
The products directory on Google Code lists each of the products for which Google appears to offer some sort of interaction from developers, some of which have API keys. Take a look at that page and visit the home page for each product in order to obtain a key.
Specifically, you can look at the Google AJAX API's page, which features each of the products for which an AJAX API exists.
You need to create project, as API key is associated with project. Here you can do this
https://code.google.com/apis/console/
Maybe have a look here and remember that "A single Maps API key is valid for a single "directory" or domain".
Technorarati's got their Cosmos api, which works fairly well but limits you to noncommercial use and no more than 500 queries a day.
Yahoo's got a Site Explorer InLink Data API, but it defines the task very literally, returning links from sidebar widgets in blogs rather than just links from inside blog content.
Is there any other alternative for tracking who's linking to a given URL (think of the discussion links that run below stories on Techmeme.com)? Or will I have to roll my own?
Well, it's not an API, but if you google (for example): "link:nytimes.com", the search results that come back show inbound links to that site.
I haven't tried to implement what you want yet, but the Google search API almost certainly has that functionality built in.
Is this for links to Urls under your control?
If so, you could whip up something quick that logs entries in the Referrer HTTP header.
If you wanted to do to this for an entire web site without altering application code, you could implement as an ISAPI filter or equivalent for your web server of choice.
Information available publicly from web crawlers is always going to be incomplete and unreliable (not that my solution isn't...).