Refactor Ruby code from Hacker News API. Trouble parsing the JSON data
Redundant operations
After reading the data from the web service, you go over it a number of times, which seems redundant:


results = parsed.reject { |key, value| key != "results"}



Why is that important? You go over the whole JSON, and discard everything - but you gain nothing. Simply use only what you need, no need to actively remove it.


pull_items = []
pull_items = results["results"].each do |items|
  pull_items &lt;&lt; items
end



This is simply a very convoluted way of saying pull_items = results['results']...


pull_info = []
pull_items.each do |x|
  pull_info &lt;&lt; x["item"]
end



Ruby's idiomatic way of saying the same thing is pull_info = pull_items.map { |x| x['item'] }


@stories = pull_info.map do |s|
  News.new s["title"], s["url"], s["username"]
end



If this is what you actually wanted, you don't really need all the temporary artifacts in the middle - simply do it in one swoop: 

@stories = results['results'].map do |r| 
  item = r['item']
  News.new item['title'], item['url'], item['username']
end


Naming Conventions
It is conventional in ruby to name getters by the name of the member, without the get_XXX. For that convention, there is even a shortcut - attr_reader. So, instead of writing def get_url you should do:

class News
  attr_reader :url
  ...
end

@link = @stories[@counter].url


and it will just work...

Code Encapsulation
A ruby file should contain a single class. It should not contain any floating methods.
Actually, there should not be any floating methods. Create a different class, or a module, which will contain the show_story, shuffle, and next_story. This will also force you to name the module, and make it more obvious what is its role in your application.